【问题标题】:Get process id that is listening to a queue获取正在侦听队列的进程 ID
【发布时间】:2021-04-02 07:09:46
【问题描述】:
我正在使用嵌入在 JBoss EAP 7.2.0 服务器中的 Apache ActiveMQ Artemis。我创建了一个队列,并且外部应用程序(JBoss 服务器外部)正在监听该队列。在 JBoss 管理控制台的 Runtime 选项卡中,我可以看到我的队列有 1 个侦听器,但几天后我看到侦听器的数量增加到 2 或 3 个。
有什么方法可以获取正在监听队列的进程的详细信息?
【问题讨论】:
标签:
java
message-queue
activemq-artemis
jboss-eap-7
【解决方案1】:
在您的特定用例中,只有远程消费者位于您的 EAP 服务器的同一主机上,您可以使用以下命令获取所有连接的进程(请注意,这不包括您也有内部消费者的情况您的服务器和/或外部主机上的远程消费者的相同进程 ID)。
$ lsof -Pni | grep ">127.0.0.1:8080"
java 25322 fvaleri 230u IPv4 0x97a3c5aa109b7ebd 0t0 TCP 127.0.0.1:55058->127.0.0.1:8080 (ESTABLISHED)
然后,每个连接可能会打开多个会话,您可以使用以下命令找出这些会话(将 TestQueue 替换为您的队列名称)。
$ $EAP_HOME/bin/jboss-cli.sh -c --command="/subsystem=messaging-activemq/server=default/jms-queue=TestQueue:list-consumers-as-json"