我有一个应用程序发布一些消息。让我们说一个PaymentHasBeenMadeEvent
{ orderId:'1234'
totalPaid:'$100'
balanceStatus: 'BALANCED'
}
有几个应用程序关心此事件。例如,货运应用程序触发事件的过程,或者会计应用程序发送有关事件的电子邮件。
所以我想使用JMS durable-topic发布此事件。我应该像我研究的那样为每个应用程序配置一个唯一的客户端ID。
令我困惑的是,运送应用程序部署为具有多个节点的群集。但我希望该运输仅由运输应用程序使用一次。我怎么能这样做?
或者解决方案是一个缺陷,因为我误解了一些东西?
答案 0 :(得分:1)
您可以使用JMS 2.0中添加的共享订阅者。如果您使用的是Spring 4.1,则可以将subscriptionShared标志设置为true,以便集群中只有一个实例可以接收该消息。
值得提及New Messaging Features in JMS 2.0。
答案 1 :(得分:0)
使用组语法。在每个监听器的主题前面添加相同的组。
即
[[payment_group_name]]payment.has.been.made