|
@@ -0,0 +1,64 @@
|
|
|
+---
|
|
|
+title: RabbitMQ 拓展篇
|
|
|
+date: 2019-01-22 16:17:19
|
|
|
+tags: [Spring Boot,消息队列]
|
|
|
+categories: [Java,Spring]
|
|
|
+---
|
|
|
+#### jackson
|
|
|
+在 rabbitMq 中还有个重要的组件是 MessageConverter,用于消息格式的设置。
|
|
|
+默认使用amqp的 SimpleMessageConverter 使用text传输,在传输量较大的数据时比较消耗性能。
|
|
|
+另一种就是 Jackson2JsonMessageConverter,使用json传输。
|
|
|
+
|
|
|
+**全局配置文件**
|
|
|
+```java
|
|
|
+@Configuration
|
|
|
+public class RabbitMqConfig {
|
|
|
+
|
|
|
+ /* 设置消息传输形式 使用jackson 相对默认SimpleMessageConverter 提高性能 */
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 发送消息设置用json的形式序列化
|
|
|
+ * @param connectionFactory
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Bean
|
|
|
+ public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
|
|
|
+ RabbitTemplate template = new RabbitTemplate(connectionFactory);
|
|
|
+ template.setMessageConverter(new Jackson2JsonMessageConverter());
|
|
|
+ return template;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 接受的时候使用jackson 反序列化
|
|
|
+ * @param connectionFactory
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Bean
|
|
|
+ public SimpleRabbitListenerContainerFactory rabbitListenerContainerFactory(ConnectionFactory connectionFactory) {
|
|
|
+ SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
|
|
|
+ factory.setConnectionFactory(connectionFactory);
|
|
|
+ factory.setMessageConverter(new Jackson2JsonMessageConverter());
|
|
|
+ return factory;
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+**接受者配置**
|
|
|
+```java
|
|
|
+@Component
|
|
|
+@RabbitListener(queues = "dcloud.fanout.queue",containerFactory = "rabbitListenerContainerFactory")
|
|
|
+public class FanoutReceiverA {
|
|
|
+
|
|
|
+ @RabbitHandler
|
|
|
+ public void process(@Payload String message) {
|
|
|
+ System.out.println("receive" + message);
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+```
|
|
|
+贴出simple和jack ,string和Object 数据传输格式
|
|
|
+
|
|
|
+![javabean_jackson_message](javabean_jackson_message.jpg)
|
|
|
+![javabean_simple_message](javabean_simple_message.jpg)
|
|
|
+![string_jackson_message](string_jackson_message.jpg)
|
|
|
+![string_simple_message](string_simple_message.jpg)
|