RocketMQ-消费MQ消息简单示例

public static void main(String[] args) throws InterruptedException, MQClientException {
	DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("test-consumer");
	consumer.setNamesrvAddr("1.1.1.1:9876");
	consumer.subscribe("test-topic", "*");
	consumer.registerMessageListener(new MessageListenerConcurrently() {
		@Override
		public ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgs,  ConsumeConcurrentlyContext context) {
			System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs);
			try {
				for (MessageExt messageExt : msgs){
					String messageBody = new String(messageExt.getBody(), "utf-8");
					System.out.println(messageBody);
				}
			} catch (UnsupportedEncodingException e) {
				e.printStackTrace();
			}
			return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
		}
	});
	consumer.start();
	System.out.printf("Consumer Started.");
}

执行结果:

Consumer Started.
ConsumeMessageThread_1 Receive New Messages: [MessageExt [queueId=2, storeSize=351, ... ] 
ConsumeMessageThread_2 Receive New Messages: [MessageExt [queueId=0, storeSize=351, ...] 
{"ticketFailure":27,"total":157,"airTicketTotal":115...}
以下是一个使用RocketMQ同时消费多个MQ集群的示例: ```java public class MultiClusterConsumer { public static void main(String[] args) throws InterruptedException, MQClientException { // 定义需要消费的 topic 和 tag String topic = "TestTopic"; String tag = "*"; // 定义多个 MQ 集群的地址 String[] clusterAddresses = new String[]{ "10.0.0.1:9876", "10.0.0.2:9876", "10.0.0.3:9876" }; // 创建多个消费者实例 List<DefaultMQPushConsumer> consumers = new ArrayList<>(); for (String clusterAddress : clusterAddresses) { DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("ConsumerGroup"); consumer.setNamesrvAddr(clusterAddress); consumer.subscribe(topic, tag); consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> { // 消费消息的逻辑 return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; }); consumers.add(consumer); consumer.start(); } // 等待消费者关闭 for (DefaultMQPushConsumer consumer : consumers) { consumer.shutdown(); } } } ``` 在上面的示例中,我们首先定义了需要消费的 topic 和 tag,然后定义了多个 MQ 集群的地址。接着,我们创建了多个消费者实例,每个消费者实例连接到不同的 MQ 集群,并订阅相同的 topic 和 tag。最后,我们等待消费者关闭。 需要注意的是,当使用多个 MQ 集群时,消息可能会被重复消费。因此,在实际应用中,我们需要根据业务场景来选择是否使用多个 MQ 集群。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值