我们在应用程序中使用JMS队列,应用程序部署在websphere集群上的两个节点上。 JMS队列是在websphere中的集群级别创建的。我们正在使用JMS消息侦听器,只要队列中有消息就会调用它。
我想知道当有两个节点时,在这种情况下存在多少个消息侦听器实例。 目前我们正在观察消息是否同时处理,即如果两个消息在队列中,则立即采摘它们而不是一个接一个地采摘。如何阻止这个问题。 我想要一种顺序方法来处理消息。谢谢
答案 0 :(得分:0)
在这种情况下,我不认为Message Driven Beans是适合您的解决方案。通常,您在群集环境中使用MDB,因为您希望所有MDB同时运行并并行使用消息以提高吞吐量。
您可以使用侦听器端口或Acitvation规范在单个群集成员上停止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
答案 1 :(得分:0)
开箱即用的确切解决方案可满足您的需求。 如果以下链接损坏,您可以通过“公交目的地的严格消息排序”进行谷歌搜索。
您只需设置“服务集成 - 总线> BUSName>目的地> QueueName”;选项“维护严格的消息顺序”复选框。