• 一、使用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);
          }
      }
      

  • 相关阅读:
    「2019.7.25 考试」偶然发生
    「刷题」可怜与STS
    「刷题」小星星
    「刷题」数三角形
    「刷题」 关于线段上的整点个数
    「刷题」Color 群论
    「2019.7.22 考试」AC和WA0一步之遥
    「刷题」幸运数字
    「刷题」卡特兰数&prufer序列
    「刷题」一个人的数论
  • 原文地址:https://www.cnblogs.com/coderD/p/14263346.html
Copyright © 2020-2023  润新知