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 + "】");
        }
  • 相关阅读:
    c# winform DataGridView单击选中一整行,只能单选,不能选择多行,只能选择一行
    c# winform 子窗体向父窗体传值
    as中使用字体
    出现“正尝试安装的adobe flash player不是最新版本”的解决方法
    打印等腰三角形
    【Array数组】数组的浅复制和深复制
    AIR程序app.xml配置详解(转)
    【Array数组】使用slice返回数组中的元素
    creationComplete和applicationComplete区别
    【XML】遍历xml子节点
  • 原文地址:https://www.cnblogs.com/WarBlog/p/15479285.html
Copyright © 2011-2022 走看看