• 一、使用RabbitMQ传递对象


    一、使用RabbitMQ传递对象

    RabbitMQ是消息队列,发送和接收的都是字符串/字节数组类型的消息

    1.1 使用序列化对象

    要求:

    • 传递的对象实现序列化接口

    • 传递的对象的包名、类名、属性名必须一致

    • 消息提供者

      @Service
      public class MQService {
      
          @Resource
          private AmqpTemplate amqpTemplate;
      
          public void sendGoodsToMq(Goods goods){
              //消息队列可以发送 字符串、字节数组、序列化对象
              amqpTemplate.convertAndSend("","queue1",goods);
          }
      
      }
      
    • 消息消费者

      @Component
      @RabbitListener(queues = "queue1")
      public class ReceiveService {
      
          @RabbitHandler
          public void receiveMsg(Goods goods){
              System.out.println("Goods---"+goods);
          }
      
      }
      

    1.2 使用序列化字节数组

    要求:

    • 传递的对象实现序列化接口

    • 传递的对象的包名、类名、属性名必须一致

    • 消息提供者

      @Service
      public class MQService {
      
          @Resource
          private AmqpTemplate amqpTemplate;
      
          public void sendGoodsToMq(Goods goods){
              //消息队列可以发送 字符串、字节数组、序列化对象
              byte[] bytes = SerializationUtils.serialize(goods);
              amqpTemplate.convertAndSend("","queue1",bytes);
          }
      
      }
      
    • 消息消费者

      @Component
      @RabbitListener(queues = "queue1")
      public class ReceiveService {
      
          @RabbitHandler
          public void receiveMsg(byte[] bs){
              Goods goods = (Goods) SerializationUtils.deserialize(bs);
              System.out.println("byte[]---"+goods);
          }
      
      }
      

    1.3 使用JSON字符串传递

    要求:对象的属性名一致

    • 消息提供者

      @Service
      public class MQService {
      
          @Resource
          private AmqpTemplate amqpTemplate;
      
          public void sendGoodsToMq(Goods goods) throws JsonProcessingException {
              //消息队列可以发送 字符串、字节数组、序列化对象
              ObjectMapper objectMapper = new ObjectMapper();
              String msg = objectMapper.writeValueAsString(goods);
              amqpTemplate.convertAndSend("","queue1",msg);
          }
      
      }
      
    • 消息消费者

      @Component
      @RabbitListener(queues = "queue1")
      public class ReceiveService {
      
          @RabbitHandler
          public void receiveMsg(String msg) throws JsonProcessingException {
              ObjectMapper objectMapper = new ObjectMapper();
              Goods goods = objectMapper.readValue(msg,Goods.class);
              System.out.println("String---"+msg);
          }
      }
      

  • 相关阅读:
    cf1043C. Smallest Word(贪心)
    洛谷P1081 开车旅行(倍增)
    NOI.AC NOIP2018 全国热身赛 第四场
    cf444E. DZY Loves Planting(并查集)
    NOI.AC NOIP模拟赛R3解题报告
    中国第一计算机编程高手横瓜的天才求职之路异常艰辛,天妒奇才呀
    C语言全局未初始化数据段分析
    js问题总结
    ios7新增基础类库以及OC新特性
    jquery.post用法
  • 原文地址:https://www.cnblogs.com/coderD/p/14263346.html
Copyright © 2020-2023  润新知