使用Raspberry PI和Docker contain的Pika到RabbitMQ连接失败

2024-06-17 18:11:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我在做一个简单的设置,让Raspberry PI通过RabbitMQ与服务器通信,而不是建立连接。设置如下:

  1. 客户机:Raspberry PI(Raspbien Debian 8.0)和Python2.7和Pika 0.10.0
  2. RabbitMQ服务器:MacMini运行10.11.6-OS X El Capitan with Docker

Mac上的Docker执行:

docker run -v /Users/tigelane/Documents/Development/brimstone_manager:/var/lib/rabbitmq -d --hostname my-rabbit --name some-rabbit rabbitmq:3

要在客户端上执行的Python代码:

^{pr2}$

我一直看到这个错误:

Traceback (most recent call last): File "./brimstone_post.py", line 75, in main() File "./brimstone_post.py", line 71, in main rabbit_post() File "./brimstone_post.py", line 58, in rabbit_post connection = pika.BlockingConnection(connectionParams) File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 339, in init self._process_io_for_connection_setup() File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 374, in _process_io_for_connection_setup self._open_error_result.is_ready) File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 395, in _flush_output raise exceptions.ConnectionClosed() pika.exceptions.ConnectionClosed

我读了一些其他帖子,并尝试了以下方法来解决问题:

  1. 查看rabbitmq日志:docker logs some-rabbit日志文件 没有任何联系。在
  2. 在raspberry上捕获流量 看看我是否在尝试向服务器发送流量:sudo tcpdump port 5672
  3. 确保Mac上的防火墙已关闭/端口打开。在

我终于意识到在Docker容器上没有-p选项来将端口转发到容器。我在命令行上将容器更改为打开端口5672,现在它开始工作了。希望这可以帮助其他可能正在使用hub.docker.com网站在RabbitMQ上。在

这是他们为docker容器提供的示例:$ docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3

这是我用来启动RabbitMQ docker容器的新命令,它运行得很好:docker run -v /Users/tigelane/Documents/Development/brimstone_manager:/var/lib/rabbitmq -d --hostname my-rabbit --name some-rabbit -p 5672:5672 rabbitmq:3

虽然我认为我已经解决了我的问题,但我有一种唠叨的感觉,我遗漏了一些东西(除了我可能需要添加的其他端口之外),并且可能是因为示例中省略了端口,或者他们忽略了它,以为每个人都会自然地添加端口,因为这就是您使用Docker容器的方式。不管怎样,请随时纠正我的错误。在


Tags: 端口dockerinpyliblinerabbitmqconnection