【问题标题】:How to have only a single instance of mdb (message driven bean ) in a clustered(2 nodes) environment如何在集群(2 个节点)环境中只有一个 mdb 实例(消息驱动 bean)
【发布时间】:2015-04-05 01:56:55
【问题描述】:

我们在应用程序中使用 JMS 队列,应用程序部署在 websphere 集群的两个节点上。 JMS 队列是在 websphere 的集群级别上创建的。我们正在使用 JMS 消息侦听器,只要队列中有消息,就会调用该侦听器。

我想知道在有两个节点的情况下存在多少消息侦听器实例。 目前我们正在观察消息是同时处理的,即如果有两条消息在队列中,它们会立即被挑选出来,而不是一个接一个。如何停止这个问题。 我想要一个顺序的方法来处理消息。谢谢

【问题讨论】:

    标签: jms


    【解决方案1】:

    在这种情况下,我认为消息驱动 Bean 不是适合您的解决方案。通常,您在集群环境中使用 MDB,因为您希望所有 MDB 同时运行并并行使用消息以提高吞吐量。

    您可以使用侦听器端口或激活规范停止单个集群成员上的 MDB。但是你没有自动故障转移: https://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.base.doc/ae/umb_prolp.html

    因此,也许您更喜欢使用 EJB-Timer 并从队列切换到数据库表。在这种情况下,您必须轮询表格,但如果您使用的是例如一个 Websphere 集群,它可以为您处理一次只有一个且只有一个 EJB-Timer 实例正在运行: http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/tejb_timerserviceejb_enh.html?cp=SSAW57_8.5.5%2F1-3-0-12-1-2

    【讨论】:

      【解决方案2】:

      开箱即可满足您的需求。 如果以下链接损坏,您可以通过“巴士目的地的严格消息排序”搜索它。

      您只需要设置“服务集成 - 总线 > BUSName > Destinations > QueueName”;选项“维护严格的消息顺序”复选框。

      http://www.ibm.com/support/knowledgecenter/SSAW57_8.0.0/com.ibm.websphere.nd.doc/info/ae/ae/cjo_message_order_.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-23
        • 2017-06-13
        • 1970-01-01
        • 1970-01-01
        • 2014-03-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多