猿问

ActiveMQ - 根据客户端 ID 断开另一个客户端的任何方式?

我正在使用 Amazon MQ,它是一个托管的 Active MQ 实例。我正在使用这个stomp-php 库通过 STOMP 与 PHP 连接。我计划让这些侦听器连续运行,如果断开连接,请重新连接。我担心的是,出于某种原因,脚本将停止工作,但客户端不会断开连接。如果发生这种情况,我将无法使用该客户端 ID 重新连接,直到另一个客户端断开连接。

如果发生这种情况,我希望能够远程关闭连接。我不知道这是否可以使用 STOMP,但我在 STOMP 文档中没有看到任何关于它的信息。似乎一旦您通过 STOMP 连接,您就以客户端的身份进行连接,并且您所做的一切都与该客户端相关。

我查看了 ActiveMQ 文档,并在 Artemis(如果 AmazonMQ 是 Artemis 或 Classic,则为 IDK)中看到了closeConnectionWithClientID JMSServerControl 方法。这似乎正是我想要做的,但通过 STOMP 或通过 PHP 的其他方式。

有谁知道我将如何实现这一目标?


慕斯709654
浏览 190回答 1
1回答

慕慕森

AmazonMQ 基于 ActiveMQ“经典”5.x 版本。通过 STOMP 客户端无法强制断开另一个客户端,也无法通过任何客户端协议,因为这将是一个可怕的安全性和可用性问题。要删除客户端,您需要使用 5.x 中的 JMX 管理 API,我确信它已在 AmazonMQ 实例中公开,但这是开始寻找的地方。在 5.x 中,可以使用 Jolokia 公开 JMX API,这样一旦您对希望配置的管理员角色建立了身份验证和授权,就可以使用 HTTP 请求来调用它们。
随时随地看视频慕课网APP
我要回答