【问题标题】:Way to break a connection from rabbitmq从rabbitmq断开连接的方法
【发布时间】:2011-08-18 23:35:11
【问题描述】:

我有一个有一些错误的应用程序。出于某种原因,当只有一个消费者应该存在时创建了 2 个消费者 - 并且不再检查其中一个消费者的消息。

我可以通过列出队列和服务器上的消费者数量来检测这种情况。有没有办法从服务器端销毁该消费者?

【问题讨论】:

  • 如果你想以编程方式移除消费者,应该在 RabbitMQ 通道上调用 cancel 方法。

标签: rabbitmq consumer


【解决方案1】:

您可以使用rabbitmqctl 工具(请参阅man page)或使用Web UI 终止与RabbitMQ 代理的连接。您还可以清除和删除属于流氓消费者的队列。

但是,您不能使用这些工具杀死消费者进程本身。您真的应该只专注于修复应用程序中的错误,以便只创建正确数量的消费者。

【讨论】:

  • 这确实奏效了,几乎。出于某种原因,有两个消费者,但只有一个连接分配给其中一个。另一个消费者只是……存在。现在正在寻找对这种情况的解释。
  • 不知道...如果您重新启动代理,问题是否仍然存在?
【解决方案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

【讨论】:

    【解决方案3】:

    您需要将您的消费者标记为“独家”。然后只有一个消费者注册到队列,其他消费者即使尝试从该队列获取数据也会被忽略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 1970-01-01
      • 2013-07-22
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      相关资源
      最近更新 更多