【问题标题】:How to create a JMS destination with exactly two subscribers?如何创建一个只有两个订阅者的 JMS 目的地?
【发布时间】:2012-04-10 00:52:15
【问题描述】:

我们必须使用应用程序服务器,它们都从同一个 JMS 服务器读取,最好从同一个目的地读取。我们希望确保放入此目的地的每条消息都被恰好两个听众阅读 - 我们的想法是一个具有恰好两个持久订阅者的主题。

我们正在使用 JBoss 5.1.0。我该怎么做:

1) 编写一个 *-service.xml 以便我可以确定在从目的地删除此消息之前,该消息已被两个(不少于不再)订阅者读取

2) 使用 EJB3.0 规范(带有注释和其他东西)编写一个 MDB,它将作为两个持久订阅者之一连接到主题?

我知道我可以创建一个订阅者,然后订阅一个主题,但这并不能保证在订阅之前放入主题的消息会发送给我。你能帮忙吗?

【问题讨论】:

    标签: java ejb jms


    【解决方案1】:

    虽然我无法帮助您编写代码(我是一名 c# 人员),但我也有类似的要求。我最终从主题桥接到 2 个队列,并且接收者都从各自的队列而不是主题中消费。

    【讨论】:

    • 我实际上有一个类似的解决方案,但不是主题,而是简单的队列和 MDB,它可以读取消息、克隆消息并将其发送到两个队列。必须检查这在我们的项目中是否可以接受。
    • 您不需要编写代码来执行此操作。我确信 JBoss 内置了桥接,您只需指定源和目标,它就会为您完成任务。
    • 是的,JBoss 有桥接功能,但这种机制似乎是一对一工作的,我想将其设置为一对二 - 朋友建议制作两个桥,每个接收一个队列,但网桥似乎在转发消息后会使用该消息(因此消息将通过一个网桥或第二个网桥,但不会同时通过两者)。
    • 如果你有 2 个从同一个主题到 2 个队列的桥,那么两个队列都会收到消息。
    • hmm.. 你是对的 - 桥将与主题同时设置,因此启动时不会丢失任何消息。谢谢^^
    猜你喜欢
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 2010-11-17
    • 2018-08-14
    相关资源
    最近更新 更多