【问题标题】:JMS message re-deliveryJMS消息重投
【发布时间】:2020-08-17 20:49:42
【问题描述】:

我有一个使用CLIENT_ACKNOWLEDGE 的队列,其中有一个生产者和两个消费者。两个消费者共享连接,但他们生活在不同的线程中,因此每个人都使用自己的会话。

如果消费者 A 没有确认收到的最后一条消息会怎样?在哪种情况下消息会被消费者 B 重新传递和消费?是不是当会话消费者 A 正在使用的会话关闭时?我是否需要对 JMS 提供程序进行一些配置来指示在这种情况下会发生什么?

【问题讨论】:

    标签: java rabbitmq jms activemq messaging


    【解决方案1】:

    我认为 JMS 规范中没有直接解决这种情况,因此答案最终将取决于您使用的 JMS 代理。但是,过去曾在多个 JMS 代理上工作过,我想说的是,一般来说,任何已由代理发送给消费者但尚未被该消费者确认的消息都将被取消回代理,并将被一旦相关消费者关闭,就可以重新交付。

    【讨论】:

    • 嗨贾斯汀,谢谢你的时间,我认为在谈论从同一个会话创建的消费者时确实是这种情况,我的问题更多是关于每个使用不同会话的消费者,这有意义吗给你?
    • 消费者是否是从同一个会话创建的,这有什么关系呢?一旦消费者关闭,任何未确认的消息都应放回队列中以传递给任何其他消费者。
    • 因为我只是在尝试使用 ActiveMQ,并且仅在消费者共享同一会话的情况下才会重新交付。
    • 诸如此类的重要细节确实应该成为问题的一部分。请修改您的问题并详细说明您的 exact 用例,包括可能的代码。另外,如果您使用 ActiveMQ,为什么要使用rabbitmq 标记问​​题?
    猜你喜欢
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 2011-06-11
    • 2020-03-29
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多