rocketmq (消费者消费同一个消费组,不同的topic)

本文介绍了如何在SpringBoot项目中使用RocketMQ,创建一个消费者组并订阅多个主题,如`UAUTH_SLICE_USER_PUSH_TOPIC`、`UAUTH_ALL_USER_PUSH_TOPIC`和`UAUTH_LIVE_USER_PUSH_TOPIC`,并处理接收到的消息。
摘要由CSDN通过智能技术生成
package org.springblade.modules.rocketmq;


import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext;
import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.message.MessageExt;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.apache.rocketmq.spring.core.RocketMQPushConsumerLifecycleListener;
import org.springframework.stereotype.Component;

import java.util.List;

@Component
@RocketMQMessageListener(topic = "",consumerGroup="provider")
public class MessageListener implements RocketMQListener<String>, RocketMQPushConsumerLifecycleListener {
	@Override
	public void onMessage(String str) {
	}

	@Override
	public void prepareStart(DefaultMQPushConsumer consumer) {
		try{
			consumer.subscribe("UAUTH_SLICE_USER_PUSH_TOPIC","*");
			consumer.subscribe("UAUTH_ALL_USER_PUSH_TOPIC","*");
			consumer.subscribe("UAUTH_LIVE_USER_PUSH_TOPIC","*");
			consumer.registerMessageListener((List<MessageExt> messages, ConsumeConcurrentlyContext context) -> {
				if (CollectionUtils.isNotEmpty(messages)) {
					for (MessageExt message : messages) {
						System.out.println(Thread.currentThread().getName()+"消费完成:"+message.getTopic()+ new String(message.getBody()));
					}
				}
				return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;
			});
		}catch (MQClientException e){
			e.printStackTrace();
		}
	}
}

相关链接:springboot整合rocketmq:一个消费者组怎么订阅多个topic_如何配置rocketmq 消费多个topic-CSDN博客

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来给你写一个简单的RocketMQ消费者示例代码,用于区分不同Topic和Group: ```java import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; import org.apache.rocketmq.client.exception.MQClientException; import org.apache.rocketmq.common.consumer.ConsumeFromWhere; import org.apache.rocketmq.common.protocol.heartbeat.MessageModel; public class RocketMQConsumer { private static final String NAME_SERVER_ADDR = "localhost:9876"; // RocketMQ NameServer地址 private static final String CONSUMER_GROUP = "test_consumer_group"; // 消费者名 public static void main(String[] args) { DefaultMQPushConsumer consumer = new DefaultMQPushConsumer(CONSUMER_GROUP); consumer.setNamesrvAddr(NAME_SERVER_ADDR); consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_FIRST_OFFSET); // 从最早的消息开始消费 consumer.setMessageModel(MessageModel.CLUSTERING); // 消息模式为集群模式 // 这里可以添加多个订阅的Topic和Group try { consumer.subscribe("Topic1", "Group1"); consumer.subscribe("Topic2", "Group2"); consumer.subscribe("Topic3", "Group3"); } catch (MQClientException e) { e.printStackTrace(); } // 设置消息监听器,处理消息 consumer.registerMessageListener((MessageListenerConcurrently) (msgs, context) -> { System.out.printf("%s Receive New Messages: %s %n", Thread.currentThread().getName(), msgs); return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; }); try { consumer.start(); System.out.printf("Consumer Started.%n"); } catch (MQClientException e) { e.printStackTrace(); } } } ``` 上面的代码中启动了一个RocketMQ消费者,它可以订阅多个Topic和Group,并且可以处理不同的消息。你可以根据自己的实际需求修改代码中的订阅Topic和Group。 注意:在实际使用中,需要根据不同的情况对RocketMQ消费者做进一步的配置和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值