获取正在侦听队列的进程 ID

Get process id that is listening to a queue

我正在使用嵌入在 JBoss EAP 7.2.0 服务器中的 Apache ActiveMQ Artemis。我创建了一个队列,并且外部应用程序(JBoss 服务器外部)正在侦听该队列。在 JBoss 管理控制台的“运行时”选项卡中,我可以看到我的队列有 1 个侦听器,但几天后我看到侦听器的数量增加到 2 个或 3 个。

有什么方法可以获取正在侦听队列的进程的详细信息?

在您的特定用例中,只有远程消费者在您的 EAP 服务器的同一主机上,您可以使用以下命令获取所有连接的进程(请注意,这不包括您也有内部消费者的情况使用与您的服务器相同的进程 ID and/or 外部主机上的远程消费者)。

$ 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"