【问题标题】:Transaction Management in Multiple Durable Subscribers to a Topic一个主题的多个持久订阅者中的事务管理
【发布时间】:2013-01-29 22:39:14
【问题描述】:

我正在阅读有关 Tibco MoM 的 JMS 主题订阅者(并已实现示例)。这些是我指的链接:Link1

但是,我不清楚如何通过多个订阅者管理交易。 我使用DefaultMessageListenerContainer 作为容器和持久订阅。

通常,当订阅者的onMessage 完成时,事务被提交。 How does it happen over multiple subscribers?

现在,假设 Subscriber1 收到了消息并根据它处理了一个动作(该动作不能逆转)。后来 Subscriber2 活跃起来并尝试处理此消息。出了点问题,现在必须回滚事务 - 消息将被放回主题中。

接下来,Subscriber1 会再次看到消息吗?它是否必须再次使用该消息?这是分布式事务的情况吗?什么时候提交?

【问题讨论】:

    标签: java jms publish-subscribe tibco jms-topic


    【解决方案1】:

    每个订阅者在自己的事务中接收其消息,并且如果事务成功提交,则单个订阅者将不会再看到该消息。在订阅者事务回滚时,消息将仅重新传递给失败的订阅者(假设代理不限制重新传递)。

    【讨论】:

    • 谢谢尼古拉斯。什么时候从主题中删除消息?使用什么机制来跟踪它?通常在队列中,只要消费者侦听器提交“consume/onMessage”事务,消息就会被删除。
    • 代理负责保留消息,直到它被传递给所有连接的非持久订阅者和在消息发布时订阅的所有持久订阅者。不同的实现方式在具体实现方式上有所不同,如果消息指定了生存时间,则代理可能会在消息过期后丢弃该消息,而不管它是否已被所有订阅者接收。
    猜你喜欢
    • 2014-11-13
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    • 2012-05-30
    • 2013-11-10
    • 2015-08-11
    相关资源
    最近更新 更多