如何在群集中使用spring配置持久订阅者

时间:2014-02-19 08:29:48

标签: jms spring-integration spring-jms

我有一个应用程序发布一些消息。让我们说一个PaymentHasBeenMadeEvent

{ orderId:'1234'
  totalPaid:'$100'
  balanceStatus: 'BALANCED'
}

有几个应用程序关心此事件。例如,货运应用程序触发事件的过程,或者会计应用程序发送有关事件的电子邮件。

所以我想使用JMS durable-topic发布此事件。我应该像我研究的那样为每个应用程序配置一个唯一的客户端ID。

令我困惑的是,运送应用程序部署为具有多个节点的群集。但我希望该运输仅由运输应用程序使用一次。我怎么能这样做?

或者解决方案是一个缺陷,因为我误解了一些东西?

2 个答案:

答案 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