当前位置: 首页 > 知识库问答 >
问题:

消息队列 - RocketMQ异常重试的时候,为何会触发相同群组的其他不同的Tag监听?

燕意蕴
2024-02-03

我一个springboot项目里,有2个相同主题相同群组,不同tag的监听。

为了测试异常重试机制,我在监听tagA的那个逻辑里,触发一个异常,希望RocketMQ可以重发异常到这个tagA监听里。

结果神奇的是,日志显示tagA逻辑触发了异常,接下来居然是tagB被触发了,但是我压根没发送过tagB的消息啊。。。。而且tabB的逻辑还一直被触发了多次。

另外,如果tagA的逻辑不触发异常,则tagB的监听不会被触发。RocketMQ也没改过什么,应该不是广播模式。


这是发送的代码

rocketMQTemplate.syncSend(g_mqTopic + ":tagA", "123");

这个是监听的逻辑

@RocketMQMessageListener(topic = "${my.mqTopic}", selectorExpression = "tagA", consumerGroup = "${my.mqTopic}-consumergroup1")
@RocketMQMessageListener(topic = "${my.mqTopic}", selectorExpression = "tagB", consumerGroup = "${my.mqTopic}-consumergroup1")

共有1个答案

蒋啸
2024-02-03

原来官方有提到这个问题,是我新手了 订阅关系一致
至于为什么会出现这个现象,就没解释,希望有大佬解答一下。看了一些文章,说是和ConsumeQueue有关

 类似资料:
  • 我有一个关于标题中的错误信息的问题。我正努力做到以下几点: 通过 实体的侦听器应向JMS队列(HornetQ)发送消息,通知系统的其他部分插入了该实体。 使用注释的方法被完美地调用,但是在发送消息时,我得到了下面的错误消息。看起来发送消息会触发错误,但为什么呢? 另一个奇怪的行为是,如果我第二次触发相同的操作,错误不会出现,消息会被发送到队列。 我正在使用以下环境: JBoss Wildfly C

  • https://codepen.io/cynthia0329/pen/poBdwEd 如上面例子,但鼠标快速hover的时候,可以截到如下的图,应该是固定列的hover不一致导致的,要如何解决这个问题? 如果鼠标放在普通列,感觉固定列的hover慢了一阵子 如果鼠标放在固定列,则普通列的hover慢了

  • 我有一个Azure WebJob函数,用于侦听Azure ServiceBus队列上的消息。通常,当我在代码中遇到异常时,会根据Azure WebJobs SDK文档放弃该消息: SDK在PeekLock模式下接收消息,如果函数成功完成,则调用消息完成,如果函数失败,则调用放弃。如果函数运行时间超过PeekLock超时时间,锁将自动更新。 根据Azure ServiceBus文档,这意味着该消息将

  • 我在使用新的0.3.0-beta版WebJobs SDK的WebJob中有以下逻辑。当我的代码处理消息失败时,Azure仪表板将显示聚合异常(这是有意义的,因为这是异步的)。但是,它不会重试处理消息。 我能找到的非常小的留档表明消息应该在失败后10分钟内重试。新的SDK不是这样吗? 我得到的异常源于SQL超时异常(在我的代码中是针对SQL Azure的db查询):

  • 问题内容: 我基于Apache骆驼的应用正在消耗来自IBM队列之一的消息,例如下面是连接工厂的详细信息 消耗和处理并将响应发送到来自消息头的ReplyQueue的骆驼流。 在骆驼标头中,我在JMSReplyQueue下面。您可以看到它是不同的队列管理器,并且该队列管理器来自不同的主机,但是在集群环境中。 队列管理器也在两者之间。喜欢 以下是我在发送消息时遇到的异常。 任何人都可以帮助我将消息发送到

  • 问题内容: 我基于Apache骆驼的应用正在消耗来自IBM队列之一的消息,例如下面是连接工厂的详细信息 消耗和处理并将响应发送到来自消息头的ReplyQueue的骆驼流。 在骆驼标头中,我在JMSReplyQueue下面。您可以看到它是不同的队列管理器,并且该队列管理器来自不同的主机,但是在集群环境中。 队列管理器也在两者之间。喜欢 以下是我在发送消息时遇到的异常。 任何人都可以帮助我将消息发送到