RocketMQ广播

示例:

生产者

DefaultMQProducer producer = new DefaultMQProducer("ProducerGroupName");
producer.start();

for (int i = 0; i < 100; i++){
	Message msg = new Message("TopicTest",
		"TagA",
		"OrderID188",
		"Hello world".getBytes(RemotingHelper.DEFAULT_CHARSET));
	SendResult sendResult = producer.send(msg);
	System.out.printf("%s%n", sendResult);
}
producer.shutdown();  

消费者

DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("example_group_name");

consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET);

//set to broadcast mode
consumer.setMessageModel(MessageModel.BROADCASTING);

consumer.subscribe("TopicTest", "TagA || TagC || TagD");

consumer.registerMessageListener(new MessageListenerConcurrently() {

	@Override
	public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,
		ConsumeConcurrentlyContext context) {
		System.out.printf(Thread.currentThread().getName() + " Receive New Messages: " + msgs + "%n");
		return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
	}
});

consumer.start();
System.out.printf("Broadcast Consumer Started.%n");  
  • 广播消息的发送就是一次普通消息发送
  • 消费者声明消息模式为BROADCASTING,并注册一个监听器,当广播时间发送时,Consumer自动回调监听器处理。

猜你喜欢

转载自www.cnblogs.com/stronger-brother/p/12166889.html
今日推荐