我正在尝试使用鼠标连接到我的远程rabbitmq,但我收到Connectionclosed()错误。我已经在guest.user用户的rabbit.config中进行了必要的更改,以允许所有连接以及同样的连接从我的Java代码开始工作。我甚至尝试使用所有权限创建一个新用户并连接它,但它仍然无法正常工作。虽然相同的代码在我的localhost上工作正常。任何人都可以让我知道我在这里做错了什么?
def queue_message(message, queue):
credentials = pika.PlainCredentials('xxxx', 'xxxx')
parameters = pika.ConnectionParameters('remote-server',
5672,
'/',
credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.queue_declare(queue='python_update_queue')
channel.basic_publish(exchange='update.fanout',
body=message)
logger.info("Sent message: {} to queue: {}".format(message, queue))
print 'message sent'
connection.close()
以下是我得到的错误:
app/project/rabbitmq.py" in queue_message
connection = pika.BlockingConnection(parameters)
env/lib/python2.7/site-packages/pika/adapters/blocking_connection.py" in __init__
self._process_io_for_connection_setup()
env/lib/python2.7/site-packages/pika/adapters/blocking_connection.py" in ss_io_for_connection_setup
self._open_error_result.is_ready)
env/lib/python2.7/site-packages/pika/adapters/blocking_connection.py" in _flush_output
raise exceptions.ConnectionClosed
答案 0 :(得分:5)
为您的连接参数添加连接超时 - 您可能会遇到超时问题,即网络中连接速度不够快。
另外,您的代码明确调用connection.close()
...这可能就是您的连接正在关闭的原因
答案 1 :(得分:4)
这确实是一个超时问题。在增加连接参数的超时后,正确建立连接。
parameters = pika.ConnectionParameters('remote-server',
5672,
'/',
socket_timeout=2)
答案 2 :(得分:0)
如果您连接到远程rabbitmq服务器,请检查:
使用防火墙打开远程服务器端口
远程服务器具有公共IP和rabbitmq用户可以访问该服务器
答案 3 :(得分:-1)
在管理员代码中添加您的用户管理员;
rabbitmqctl set_user_tags admin administrator
为用户admin添加足够的权限
rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"