1
0

rabbitmq2.md 2.1 KB


title: RabbitMQ 拓展篇 date: 2019-01-22 16:17:19 tags: [Spring Boot,消息队列]

categories: [Java,Spring]

jackson

在 rabbitMq 中还有个重要的组件是 MessageConverter,用于消息格式的设置。 默认使用amqp的 SimpleMessageConverter 使用text传输,在传输量较大的数据时比较消耗性能。 另一种就是 Jackson2JsonMessageConverter,使用json传输。

全局配置文件

@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;
    }
}

接受者配置

@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_messagejavabean_jackson_message

javabean_simple_messagejavabean_simple_message

string_jackson_messagestring_jackson_message

string_simple_messagestring_simple_message