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 + "】");
        }
  • 相关阅读:
    栈和队列的概念
    01-开始使用django(全、简)
    临时记录01
    centos删除乱码名称的文件
    《计算机网络》谢希仁(第7版) 第一章
    git提交到远程虚拟机
    安全篇:弱密码python检测工具
    正向代理、Nginx(反向代理、负载均衡、静态资源服务器)
    列表去重、去除满足一定条件的元素
    editplus的常用快捷键
  • 原文地址:https://www.cnblogs.com/WarBlog/p/15479285.html
Copyright © 2011-2022 走看看