rocketmq一个topic对用多个tag时tag的定义方式

"该博客讲述了在使用RocketMQ时遇到消费者只能接收部分Tag消息的问题。通过监控发现消息被过滤,解决方案是将消费者的tag设置为"*",或者使用"||"分隔多个Tag来订阅所有所需的消息。此外,还提供了示例代码展示如何修改配置以接收所有Tag的订阅。"

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在使用rocketmq时,发现消费者只能受到部分消息(消费者tag里定义的tag),查看监控器总是显示消息被过滤,解决方式(注意private String tag = "tag1";)

private String consumerGroup = "consumerTopic";

    private String namesrvAddr = "127.0.0.1:9876";

    private String topic = "supplyTopic";

    private String tag = "tag1";


    private DefaultMQPushConsumer consumer;

    @Resource
    private MessageListenerConcurrently messageListenerConcurrentlyImpl;

    public void init() {
        this.consumer = new DefaultMQPushConsumer(consumerGroup);
        consumer.setNamesrvAddr(namesrvAddr);

        try {
            //订阅testTopic下的所有tag
            consumer.subscribe(topic, tag);
            consumer.setConsumeFromWhere(ConsumeFromWhere.CONSUME_FROM_LAST_OFFSET);

            consumer.registerMessageListener(messageListenerConcurrentlyImpl);

            consumer.start();
            log.info("RocketMQ consumer启动成功");
        } catch (Exception e) {
            e.printStackTrace();
            log.error("RocketMQ consumer 启动异常!", e);
        }
    }

将private String tag = "tag1";修改为String tag = "*";这样就能接收到所有的信息了。(在同一个类中(也就是一个消费者中),同一个topic对应不同的tag,应该使用 “ || ”进行分割,使用""或“*”订阅所有tag。)

topicTags = ("${haha.mq.topic:TEST_HAHA}:${haha.mq.topic:TEST_TAG01}||" +
"${haha.mq.topic:TEST_TAG02}")
)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值