我正在使用Amazon MQ,它是一个托管的Active MQ实例。我正在使用stomp-php library通过STOMP和PHP进行连接。我计划让这些侦听器连续运行,如果断开连接,请重新连接。我担心的是,由于某种原因,脚本将停止工作,但客户端不会断开连接。如果发生这种情况,在其他客户端断开连接之前,我将无法使用该客户端ID重新连接。
如果发生这种情况,我希望能够远程关闭连接。我不知道STOMP是否可行,我在STOMP文档中看不到任何有关它的信息。看来,一旦您通过STOMP进行连接,就可以作为客户端进行连接,而您所做的一切都与该客户端有关。
我查看了ActiveMQ文档,在Artemis(如果AmazonMQ是Artemis或Classic,则为IDK)中看到了一个closeConnectionWithClientID JMSServerControl方法。看来这正是我想要做的,但是要通过STOMP或通过PHP的其他方式。
有人知道我将如何实现这一目标吗?
答案 0 :(得分:1)
AmazonMQ基于ActiveMQ“经典” 5.x版本。通过STOMP客户端,无法强制断开另一个客户端的连接,也无法通过任何客户端协议进行连接,因为这将是可怕的安全性和可用性问题。
要删除客户端,您需要在5.x中使用JMX管理API,我敢肯定这些API已在AmazonMQ实例中公开,但这将是开始寻找的地方。在5.x中,可以使用Jolokia公开JMX API,以便一旦您对希望配置的admin角色建立了身份验证和授权,便可以使用HTTP请求来调用它们。