zoukankan      html  css  js  c++  java
  • 一、使用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);
          }
      }
      

  • 相关阅读:
    [quote] Rough Notes on Linux Networking Stack
    All my miscellaneous assembly
    chrome浏览器屏幕网页内嵌的flash广告?
    [quote] How to determine what target is given in Makefile from the make command-line?
    [quote] colour your linux command line
    python 3 函数
    python 2 控制流
    薛定谔的猫 转载
    using distance to keep track of the min in a stack
    Java String
  • 原文地址:https://www.cnblogs.com/coderD/p/14263346.html
Copyright © 2011-2022 走看看