如何强制关闭客户端连接rabbitmq

时间:2015-09-05 08:05:05

标签: rabbitmq pika python-pika

我有一个使用rabbitmq代理的客户端服务器应用程序。 客户端连接到rabbitmq并将消息发送到服务器。在某些时候,如果服务器决定不应该将此客户端连接到rabbitmq,我希望能够强制断开客户端与rabbitmq边界的连接。 请注意,在我的情况下,我不想发送消息给客户端断开连接,在服务器端我想强制断开此客户端与rabbitmq的连接。

无法找到api来做到这一点。任何帮助都是适当的。

2 个答案:

答案 0 :(得分:6)

您可以通过两种方式使用管理console plug-in

  1. 手动,进入连接并强行关闭"。
    1. 通过HTTP API使用"删除" /api/connections/name,这里有一个python示例:
    2. import urllib2, base64
      def calljsonAPI(rabbitmqhost, api):
          request = urllib2.Request("http://" + rabbitmqhost + ":15672/api/" + api);
          base64string = base64.encodestring('%s:%s' % ('guest', 'guest')).replace('\n', '')
          request.add_header("Authorization", "Basic %s" % base64string);
          request.get_method = lambda: 'DELETE';
          urllib2.urlopen(request);
      if __name__ == '__main__':
          RabbitmqHost = "localhost";
          #here you should get the connection detail through the api, 
         calljsonAPI(RabbitmqHost, "connections/127.0.0.1%3A49258%20-%3E%20127.0.0.1%3A5672");
      

答案 1 :(得分:0)

您可以使用rabbitmqctl进行关闭/强制关闭连接:

rabbitmqctl close_connection <connectionpid> <explanation>

<connectionpid>来自:

rabbitmqctl list_connections

#or 

rabbitmqctl list_consumers