具有多个实例的群集中的JMS持久订阅者

时间:2016-07-01 18:08:49

标签: java java-ee cluster-computing message-driven-bean jms-topic

我将使用Payara BTW ......

假设我有:

  1. JMS主题

  2. 配置为持久主题订阅者的MDB

  3. 在整个群集中部署了多个MDB实例,它们都使用相同的客户端ID值来进行持久订阅。

  4. 如果是这种情况,并且考虑到客户端ID值和持久性订阅的工作方式,那么说集群中只有一个MDB实例能够成功连接以及其他将失败?

    谢谢!

    假设您已将MDB部署到群集,因此群集中有多个MDB实例尝试侦听。

1 个答案:

答案 0 :(得分:0)

从JMS 2.0 API [1]开始,您可以跨应用程序集群中的节点共享相同的持久订阅。

  

为了提高可扩展性,我们进行了以下更改:

     

现在允许应用程序在相同的持久或非持久主题订阅上创建多个使用者。在以前的JMS版本中,只允许一个使用者。

您可以使用JMS 2.0+ API使用JMSContext.createSharedDurableConsumer()方法创建共享持久消费者[2]

[1] https://java.net/projects/jms-spec/pages/JMS20FinalRelease#What_s_new_in_JMS_2.0? (?是链接的一部分 - 去图)

[2] https://docs.oracle.com/javaee/7/api/javax/jms/JMSContext.html#createSharedDurableConsumer-javax.jms.Topic-java.lang.String-