zoukankan      html  css  js  c++  java
  • SpringAMQP-消息转换器

    测试发送Object类型消息

    在SpringAMQP的发送方法中,接收消息的类型是Object,也就是说我们可以发送任意对象类型的消息,SpringAMQP会帮我们序列化为字节后发送。

    consumer中利用@Bean声明一个队列

        @Bean
        public Queue objectQueue(){
            return  new Queue("object.queue");
        }

    只注册队列,方便查看消息内容,因为RabbitMQ遵循阅后即焚,消息不被消费,就不会被消除。

    启动consumer服务,查看RabbitMQ Management,Queue队列是不是有object.queue队列

    publisher服务中编辑测试

    发送消息到object.queue队列

        @Test
        public void testSendMap() throws InterruptedException {
            String queueName = "object.queue";
            Map<String, String> message = new HashMap<>();
            message.put("name", "zhangsan");
            message.put("age", 25);
            rabbitTemplate.convertAndSend(queueName, "china.news", message);
        }

    查看RabbitMQ Management,object.queue队列是否有消息

    查看消息内容

    Spring的对消息对象的处理是由org.springframework.amqp.support.converter.MessageConverter来处理的。而默认使用SimpleMessageConverter消息转换器,基于JDK的ObjectOutputStream完成序列化。

    设置消息转换器

    只需要定义一个MessageConverter 类型的Bean即可。推荐用JSON方式序列化

    添加JSON依赖

            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </dependency>

    publisher服务

    定义MessageConverter

        @Bean
        public MessageConverter messageConverter(){
            return new Jackson2JsonMessageConverter();
        }

    consumer服务

    定义MessageConverter

        @Bean
        public MessageConverter messageConverter(){
            return new Jackson2JsonMessageConverter();
        }

    注意:消息发送方与接收方必须使用相同的MessageConverter消息转换器

    定义一个消费者

    监听object.queue队列并消费消息

        @RabbitListener(queues = "object.queue")
        public void listenObjectQueueMessage(Map<String,Object> msg) throws InterruptedException {
            System.out.println("ObjectQueue :【" + msg + "】");
        }
  • 相关阅读:
    UI-iOS开发中@property的属性weak nonatomic strong readonly等介绍
    UIView之userInteractionEnabled属性介绍
    UI-target...action设计模式,手势识别器.UIimageview
    UI-事件处理
    IOS开发—事件处理,触摸事件,UITouch,UIEvent,响应者链条,手势识别
    UI-事件,触摸与响应者链(一)
    第47月第11天 iOS 文件下载Download,支持断点续传、后台下载、设置下载并发数
    第47月第10天 telnet rpm包安装
    第47月第5天 openresty
    第47月第4天 arkit录制
  • 原文地址:https://www.cnblogs.com/WarBlog/p/15479285.html
Copyright © 2011-2022 走看看