我有一个应用程序存在一些漏洞。由于某种原因,当应只存在一个消费者时,会创建2个消费者,并且其中一个不再检查消息。
我可以通过列出服务器上的队列和消费者数量来检测这种情况。是否有一种从服务器端销毁该消费者的方法?
使用 rabbitmqctl
命令中的 close_connection 输入参数 connectionpid
可以杀死消费者。
例如:
> rabbitmqctl close_connection "<rabbit@hardys-Mac-mini.1.4195.0>" "reason here"
连接 PID 可以通过以下方式获取
> rabbitmqctl list_consumers
Listing consumers ...
send_email_1 <rabbit@hardys-Mac-mini.1.4185.0> amq.ctag-oim8CCP2hsioWc-3WwS-qQ true 1 []
send_email_2 <rabbit@hardys-Mac-mini.1.4195.0> amq.ctag-WxpxDglqZQN2FNShN4g7QA true 1 []
RabbitMQ 3.5.4
您需要将您的消费者标记为“独占”。然后只有一个消费者会注册到队列中,其他消费者即使尝试从该队列获取数据也会被忽略。