文章目录 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 {
}