RocketMQ(三)——————javaAPI (4.发送批量消息)

 

  发送批量消息 :
  如果您每次只发送不超过4MB的消息,则很容易使用批处理,样例如下:

   消息接收方式:RocketMQ(三)——————javaAPI(1.2.3.4 消息接收方式)

注意:
- 批量消息要求必要具有同一topic、相同消息配置
- 不支持延时消息
- 建议一个批量消息最好不要超过1MB大小
- 如果不确定是否超过限制,可以手动计算大小分批发送

//官网示例
    String topic = "BatchTest";
    List<Message> messages = new ArrayList<>();
    messages.add(new Message(topic, "TagA", "OrderID001", "Hello world 0".getBytes()));
    messages.add(new Message(topic, "TagA", "OrderID002", "Hello world 1".getBytes()));
    messages.add(new Message(topic, "TagA", "OrderID003", "Hello world 2".getBytes()));
    try {
        producer.send(messages);
    } catch (Exception e) {
    e.printStackTrace();
    //处理error
    }
    

    //简单理解
    public static void main(String[] args) throws Exception {

        DefaultMQProducer producer = new DefaultMQProducer("rocketMq1");

        //设置nameserver地址:
        producer.setNamesrvAddr("127.0.0.1:9876");
        producer.start();

        //topic 消息将要发送的地址
        //body 具体消息内容
        Message message1 = new Message("myTopic001","rocketMq1 第一次发送".getBytes());
        Message message2 = new Message("myTopic001","rocketMq1 第二次发送".getBytes());
        Message message3 = new Message("myTopic001","rocketMq1 第三次发送".getBytes());

        ArrayList arrayList = new ArrayList();
        arrayList.add(message1);
        arrayList.add(message2);
        arrayList.add(message3);

        SendResult result = producer.send(arrayList);

        System.out.println("发送结果 :"+result);
        producer.shutdown();
        System.out.println("生产者下线!");

    }

 

posted @ 2021-03-30 17:27  Li&Fan  阅读(246)  评论(0编辑  收藏  举报