ActiveMQ - 有什么方法可以根据客户端 ID 断开另一个客户端的连接?
ActiveMQ - any way to disconnect another client based on the client ID?
我正在使用 Amazon MQ,它是一个托管的 Active MQ 实例。我正在使用 stomp-php library 通过 STOMP 与 PHP 连接。我计划让这些监听器持续 运行,如果断开连接,则重新连接。我担心的是,出于某种原因,脚本将停止工作,但客户端不会断开连接。如果发生这种情况,我将无法与该客户端 ID 重新连接,直到另一个客户端断开连接。
如果发生这种情况,我希望能够远程关闭连接。不过,我不知道 STOMP 是否可行,我在 STOMP 文档中没有看到任何相关信息。似乎一旦你通过 STOMP 连接,你就作为客户端连接,你所做的一切都与该客户端有关。
我查看了 ActiveMQ 文档并在 Artemis 中看到(如果 AmazonMQ 是 Artemis 或 Classic,则为 IDK)有一个 closeConnectionWithClientID JMSServerControl 方法。这似乎正是我想要做的,但是通过 STOMP 或通过 PHP.
的其他方式
有谁知道我将如何实现这一目标?
AmazonMQ 基于 ActiveMQ "classic" 5.x 版本。通过 STOMP 客户端,没有办法强制断开另一个客户端的连接,也没有办法通过任何客户端协议,因为那将是一个可怕的安全性和可用性问题。
要删除客户端,您需要使用 5.x 中的 JMX 管理 APIs,我敢肯定它在 AmazonMQ 实例中公开,但这是开始寻找的地方。在 5.x 中,JMX API 可以使用 Jolokia 公开,这样一旦您建立了对您希望配置的管理员角色的身份验证和授权,就可以使用 HTTP 请求来调用它们。
我正在使用 Amazon MQ,它是一个托管的 Active MQ 实例。我正在使用 stomp-php library 通过 STOMP 与 PHP 连接。我计划让这些监听器持续 运行,如果断开连接,则重新连接。我担心的是,出于某种原因,脚本将停止工作,但客户端不会断开连接。如果发生这种情况,我将无法与该客户端 ID 重新连接,直到另一个客户端断开连接。
如果发生这种情况,我希望能够远程关闭连接。不过,我不知道 STOMP 是否可行,我在 STOMP 文档中没有看到任何相关信息。似乎一旦你通过 STOMP 连接,你就作为客户端连接,你所做的一切都与该客户端有关。
我查看了 ActiveMQ 文档并在 Artemis 中看到(如果 AmazonMQ 是 Artemis 或 Classic,则为 IDK)有一个 closeConnectionWithClientID JMSServerControl 方法。这似乎正是我想要做的,但是通过 STOMP 或通过 PHP.
的其他方式有谁知道我将如何实现这一目标?
AmazonMQ 基于 ActiveMQ "classic" 5.x 版本。通过 STOMP 客户端,没有办法强制断开另一个客户端的连接,也没有办法通过任何客户端协议,因为那将是一个可怕的安全性和可用性问题。
要删除客户端,您需要使用 5.x 中的 JMX 管理 APIs,我敢肯定它在 AmazonMQ 实例中公开,但这是开始寻找的地方。在 5.x 中,JMX API 可以使用 Jolokia 公开,这样一旦您建立了对您希望配置的管理员角色的身份验证和授权,就可以使用 HTTP 请求来调用它们。