无法连接到远程托管的RabbitMQ服务器

时间:2017-01-24 13:40:49

标签: server rabbitmq

我使用reference在Ubuntu 16.04服务器上安装并配置了RabbitMQ。由于默认用户guest默认只允许在本地连接,因此我添加了一个具有管理员标记的新用户并设置其权限,以便它可以访问/虚拟主机。我启用了RabbitMQ管理控制台。我已成功登录我创建的用户。当我使用我创建的用户通过localhost连接到RabbitMQ时,我也能够连接它。但是当我尝试使用以下代码通过其他服务器连接RabbitMQ服务器时:

import pika
credentials = pika.PlainCredentials('new_user', 'new_pass')
parameters = pika.ConnectionParameters('<server's Public IP>', 5672,'/',credentials)
connection = pika.BlockingConnection(parameters)

它会抛出错误:

  

追踪(最近一次通话):     文件“”,第1行,in     在 init 中输入文件“/Library/Python/2.7/site-packages/pika/adapters/blocking_connection.py”,第339行       self._process_io_for_connection_setup()     在_process_io_for_connection_setup中输入文件“/Library/Python/2.7/site-packages/pika/adapters/blocking_connection.py”,第374行       self._open_error_result.is_ready)     在_flush_output中输入文件“/Library/Python/2.7/site-packages/pika/adapters/blocking_connection.py”,第395行       引发异常.ConnectionClosed()   pika.exceptions.ConnectionClosed

当我在安装了RabbitMQ的服务器上运行此代码并将<server's Public IP>替换为0.0.0.0时,相同的代码工作正常。

sudo netstat -nltp

的输出
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      18021/beam
tcp        0      0 0.0.0.0:4369            0.0.0.0:*               LISTEN      18110/epmd
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1230/sshd
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      18021/beam
tcp6       0      0 :::5672                 :::*                    LISTEN      18021/beam
tcp6       0      0 :::4369                 :::*                    LISTEN      18110/epmd
tcp6       0      0 :::22                   :::*                    LISTEN      1230/sshd

可能导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:2)

这通常在连接超时非常低的情况下发生。调整你的连接字符串以包括更大的连接超时,例如30或60秒,你应该很高兴。

看起来pika使用此设置https://pika.readthedocs.io/en/latest/modules/parameters.html#pika.connection.ConnectionParameters.blocked_connection_timeout