【发布时间】:2011-08-18 23:35:11
【问题描述】:
我有一个有一些错误的应用程序。出于某种原因,当只有一个消费者应该存在时创建了 2 个消费者 - 并且不再检查其中一个消费者的消息。
我可以通过列出队列和服务器上的消费者数量来检测这种情况。有没有办法从服务器端销毁该消费者?
【问题讨论】:
-
如果你想以编程方式移除消费者,应该在 RabbitMQ 通道上调用 cancel 方法。
我有一个有一些错误的应用程序。出于某种原因,当只有一个消费者应该存在时创建了 2 个消费者 - 并且不再检查其中一个消费者的消息。
我可以通过列出队列和服务器上的消费者数量来检测这种情况。有没有办法从服务器端销毁该消费者?
【问题讨论】:
消费者可以被rabbitmqctl使用close_connection输入connectionpid杀死
例子
> rabbitmqctl close_connection "<rabbit@hardys-Mac-mini.1.4195.0>" "reason here"
connectionpid可以通过
> 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
【讨论】:
您需要将您的消费者标记为“独家”。然后只有一个消费者注册到队列,其他消费者即使尝试从该队列获取数据也会被忽略。
【讨论】: