我使用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
可能导致此错误的原因是什么?
答案 0 :(得分:2)
这通常在连接超时非常低的情况下发生。调整你的连接字符串以包括更大的连接超时,例如30或60秒,你应该很高兴。