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

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

顺便说一句,我将使用 Payara....

假设我有:

  1. JMS 主题

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

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

如果是这种情况,并且考虑到客户端 ID 值和持久订阅的工作方式,集群中只有 1 个 MDB 实例会成功连接而其他实例会失败,这种说法是否正确?

谢谢!

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

最佳答案

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

The following change has been made to aid scalability:

Applications are now permitted to create multiple consumers on the same durable or non-durable topic subscription. In previous versions of JMS only a single consumer was permitted.

您可以使用 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-

关于java - 具有多个实例的集群中的 JMS 持久订阅者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38151575/

相关文章:

java - Java 后端的最佳 RIA 工具

java - 如何收集不同节点的访问日志?

Redis 集群 : how to delete all keys for a specific hashtag

r - 根据具有条件的列值按组对行进行聚类

java - sql/jdbc 查询中的动态列

java - IntelliJ Idea 12 无法运行/部署 Web 应用程序

java - Spring MVC - 没有找到请求 URI 的映射

java - 显示一次答案

java - Web 应用程序中的依赖类出现 NoClassDefFoundError

java - 跨集群共享 java 对象