发送批量消息 :
如果您每次只发送不超过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("生产者下线!"); }