【问题标题】:Unable to use same clientId on 3 HA cluster architecture无法在 3 HA 集群架构上使用相同的 clientId
【发布时间】:2020-04-21 03:13:20
【问题描述】:

我正在使用由 3 个代理(1 个主设备,2 个从设备)组成的 ActiveMQ Artemis 集群,使用 UDP 广播进行设置。

ActiveMQ Artemis 正在按预期启动,但在尝试使用 SAG webMethods 创建 JMS 连接时,它返回错误:

clientID=activemq was already set into another connection

我有 3 个集成服务器,每个都配置了这个 JNDI 配置,指向 3 个 ActiveMQ Artemis 代理:

  • 初始上下文工厂org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory
  • 提供者网址tcp://S1:9000?sslEnabled=true&ha=true&reconnectAttempts=-1
  • 提供者 URL 故障转移列表tcp://S2:9000?sslEnabled=true,tcp://S3:9000?sslEnabled=true

我需要将我的 T1、T2 和 T3 webmethods 服务器连接到 ActiveMQ Artemis 集群。在 T1 服务器上,我设法以 activemq 作为 clientID 建立 JMS 连接。但在剩余的 T2 和 T3 webmethods 服务器上,返回错误 clientID=activemq was already set into another connection

ActiveMQ Artemis 支持 JMS 2.0,并且应该可以有多个客户端指向相同的 clientID/destination,对吧?它允许共享订阅。

我在这里缺少什么?我根本没有创建任何主题,我只想先在 3 个服务器上建立 JMS 连接。

【问题讨论】:

    标签: activemq-artemis webmethods


    【解决方案1】:

    ActiveMQ Artemis 确实支持 JMS 2.0,因此共享持久订阅,但 JMS 2 规范的第 6.1.2 节规定:

    客户端标识符的目的是关联一个连接和它的对象 由提供商代表客户维护的状态。 根据定义, 由客户端标识符标识的客户端状态只能由一个“正在使用” 一次客户端。 JMS 提供程序必须防止并发执行 客户使用它。

    ...

    JMS 定义的客户端标识符的唯一用途是在 识别非共享持久订阅或其可选在 识别共享的持久订阅或非持久订阅。 [强调我的]

    因此,您收到异常的原因是您试图违反 JMS 规范。请为每个持久订阅者设置一个唯一的客户端标识符,如果您使用的是共享持久订阅,请直接省略客户端标识符。

    【讨论】:

    • 嗨贾斯汀,感谢您的回复。我正在使用共享的持久订阅者,我希望事件由 3 个节点中的 1 个处理一次。如果我仅在 1/3 JMS 连接处提供 clientId,则使用此目标的触发器不会从没有 clientId 的连接开始:无法创建持久订阅 - 尚未设置客户端 ID 是否可以在连接工厂定义 clientId,重用 clientID在 3 个 JMS 连接上?我需要 3 个连接监听 如果是这样,你知道我需要改变哪里吗?在 JNDI 提供程序 URL 上?经纪人.xml? artemis.profile?谢谢!
    • 您使用什么 API 调用来创建共享持久订阅?如我的回答中所述,客户端 ID 对于非共享持久订阅是必需的,但对于共享持久订阅是可选。听起来您正在使用创建非共享持久订阅的 API 调用。
    • 在幕后使用 API 的是 webmethods 集成服务器......我们怀疑他们使用它的方式与在其内部消息传递组件上的方式相同,因此调用了一个不完全的错误 API支持 JMS 2.0。检查的唯一方法是反编译产品库....
    • 如果应用程序没有调用正确的 JMS 2.0 方法,那么您将无法在多个使用者之间共享订阅。该功能仅在 JMS 2.0 中受支持。值得一提的是,这是使用开源软件的另一个很好的理由——你可以看看它到底在做什么。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2016-05-02
    • 2020-07-31
    • 2020-10-17
    • 1970-01-01
    • 2017-07-09
    相关资源
    最近更新 更多