【发布时间】:2019-11-04 03:36:33
【问题描述】:
在 JMS 1.x 中,clientId 用于在创建持久订阅时唯一标识客户端。这个answer 解释了 JMS 1.x 中的 clientId 用法
在 JMS 2.x 中,clientId 是可选的。我想了解在 JMS 2.x 中提供 clientId 的利弊。
来自Oracle article on JMS 2.x features:
共享持久订阅。这些仅在 JMS 2.0 中可用,并使用
createSharedDurableConsumer创建。他们可以有任意数量的消费者。 设置客户端标识符是可选的。订阅由订阅名称和客户端标识符的组合标识(如果已设置)。
现在听起来订阅名称是唯一标识符,但是为什么要有clientID?这些是会话类的新方法,因此不能向后兼容。使用 JMS 2.x 设置 clientId 有什么好处或坏处?
MessageConsumer messageConsumer = session.createSharedDurableConsumer(topic, "myDurableSub");
【问题讨论】: