在测试环境中,即使应用程序停止,也有兔子消费者连接到 RELAY-*
队列 . 这导致消息被这些“幽灵”消费者消耗给队列,并且实际应用程序不接收任何数据,除非应用程序的消费者首先接收它 .
例如,rabbitTST队列 RELAY-TASK-PUBLISH-QUESTION-STORE
RELAY(grails app)应该是唯一的消费者,它现在在服务器上关闭,但目前有14个消费者 .
不是兔子/队列/消费者专家,但我不认为这是它应该如何工作 .
版本: RabbitMQ 3.3.5
, Erlang R14B04
我可以在管理插件上看到鬼消费者 . 应该只有2个消费者,但目前的状况不断变化 . 有时它是14个消费者,有时是10个 .
该应用程序在tomcat实例上运行 . 停止后,应用程序将关闭该实例 . 证书有效期至2038年 .
"=ERROR REPORT==== 5-Oct-2017::17:04:14 ===
error on AMQP connection <0.13009.515>:
{ssl_upgrade_error,ekeyfile}
=INFO REPORT==== 5-Oct-2017::17:04:14 ===
accepting AMQP connection <0.13019.515> (10.142.33.2:22343 -> 10.142.18.21:5671)
=ERROR REPORT==== 5-Oct-2017::17:04:14 ===
SSL: 1112: error:[] /etc/rabbitmq/ssl/rabbitmq_wildcard.key
[{ssl_connection,init_private_key,5},
{ssl_connection,ssl_init,2},
{ssl_connection,init,1},
{gen_fsm,init_it,6},
{proc_lib,init_p_do_apply,3}]" `
1 回答
您可以使用命令行操作来查找使用者 .
首先,让我们找出实际拥有这些消费者的渠道:
通过这种方式,您应该能够识别哪些渠道拥有这些消费者(因为他们将拥有
consumer_count > 0
) .现在,让我们找到连接:
这样,您应该识别启动连接的主机/端口 .
RabbitMQ的REST管理API暴露了一些非常相似的功能 . 您甚至可以转到管理控制台,选择有问题的队列,然后展开“使用者”部分 . 然后你可以找到 Channels ,最终找到连接 .
如果在RabbitMQ服务器端由于某种原因连接卡住,您可以使用
或者从UI关闭它 .