文章目录
1.目录结构 2.代码 1.pom.xml 排除logging 2.RabbitMQConfig.java 3.RabbitMQAutoConfiguration.java
1.目录结构
2.代码
1.pom.xml 排除logging
<?xml version="1.0" encoding="UTF-8"?>
< project xmlns = " http://maven.apache.org/POM/4.0.0"
xmlns: xsi= " http://www.w3.org/2001/XMLSchema-instance"
xsi: schemaLocation= " http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" >
< modelVersion> 4.0.0</ modelVersion>
< parent>
< groupId> com.sunxiansheng</ groupId>
< artifactId> sunrays-common</ artifactId>
< version> 1.0.5</ version>
</ parent>
< version> 1.0.5</ version>
< artifactId> common-rabbitmq-starter</ artifactId>
< dependencies>
< dependency>
< groupId> com.sunxiansheng</ groupId>
< artifactId> common-tool-starter</ artifactId>
< version> 1.0.5</ version>
</ dependency>
< dependency>
< groupId> org.springframework.boot</ groupId>
< artifactId> spring-boot-starter-amqp</ artifactId>
< exclusions>
< exclusion>
< artifactId> spring-boot-starter-logging</ artifactId>
< groupId> org.springframework.boot</ groupId>
</ exclusion>
</ exclusions>
</ dependency>
</ dependencies>
</ project>
2.RabbitMQConfig.java
package com. sunxiansheng. rabbitmq. config ;
import org. springframework. amqp. core. Message ;
import org. springframework. amqp. core. MessageProperties ;
import org. springframework. amqp. rabbit. connection. ConnectionFactory ;
import org. springframework. amqp. rabbit. core. RabbitTemplate ;
import org. springframework. amqp. support. converter. Jackson2JsonMessageConverter ;
import org. springframework. amqp. support. converter. MessageConverter ;
import org. springframework. amqp. support. converter. SimpleMessageConverter ;
import org. springframework. boot. autoconfigure. AutoConfigureBefore ;
import org. springframework. boot. autoconfigure. amqp. RabbitAutoConfiguration ;
import org. springframework. context. annotation. Bean ;
import org. springframework. context. annotation. Configuration ;
@Configuration
@AutoConfigureBefore ( RabbitAutoConfiguration . class )
public class RabbitMQConfig {
@Bean
public MessageConverter customMessageConverter ( ) {
return new MessageConverter ( ) {
private final Jackson2JsonMessageConverter jacksonConverter = new Jackson2JsonMessageConverter ( ) ;
private final SimpleMessageConverter simpleMessageConverter = new SimpleMessageConverter ( ) ;
@Override
public Message toMessage ( Object object, MessageProperties messageProperties) throws RuntimeException {
if ( object instanceof String ) {
messageProperties. setContentType ( "text/plain" ) ;
return simpleMessageConverter. toMessage ( object, messageProperties) ;
} else {
messageProperties. setContentType ( "application/json" ) ;
return jacksonConverter. toMessage ( object, messageProperties) ;
}
}
@Override
public Object fromMessage ( Message message) throws RuntimeException {
String contentType = message. getMessageProperties ( ) . getContentType ( ) ;
if ( "application/json" . equals ( contentType) ) {
return jacksonConverter. fromMessage ( message) ;
} else if ( "text/plain" . equals ( contentType) ) {
return simpleMessageConverter. fromMessage ( message) ;
} else {
throw new RuntimeException ( "自定义的消息转换器不支持该类型: " + contentType) ;
}
}
} ;
}
@Bean
public RabbitTemplate rabbitTemplate ( ConnectionFactory connectionFactory) {
RabbitTemplate rabbitTemplate = new RabbitTemplate ( connectionFactory) ;
rabbitTemplate. setMessageConverter ( customMessageConverter ( ) ) ;
return rabbitTemplate;
}
}
3.RabbitMQAutoConfiguration.java
package com. sunxiansheng. rabbitmq. config ;
import org. springframework. context. annotation. Configuration ;
import org. springframework. context. annotation. Import ;
@Configuration
@Import ( RabbitMQConfig . class )
public class RabbitMQAutoConfiguration {
}