远程连接到 RabbitMQ 实例(在 AWS 上创建)

use*_*803 4 rabbitmq amazon-web-services python-pika

我在连接到 RabbitMQ 实例时遇到问题(这是我第一次这样做)。我已经在 AWS 上启动了一个,并获得了我可以访问的管理面板的访问权限。

我正在尝试使用以下代码连接到 python/pika 中的 RabbitMQ 服务器:

import pika
import logging

logging.basicConfig(level=logging.DEBUG)

credentials = pika.PlainCredentials('*******', '**********')
parameters = pika.ConnectionParameters(host='a-25c34e4d-a3eb-32de-abfg-l95d931afc72f.mq.us-west-1.amazonaws.com',
                                       port=5671,
                                       virtual_host='/',
                                       credentials=credentials,
                                       )

connection = pika.BlockingConnection(parameters)
Run Code Online (Sandbox Code Playgroud)

pika.exceptions.IncompatibleProtocolError: StreamLostError: ("Stream connection lost: ConnectionResetError(54, 'Connection reset by peer')",)当我运行上面的代码时我得到了。

小智 8

您尝试通过 AMQP 协议进行连接,并且 AWS 使用 AMQPS,您应该将 ssl_options 添加到您的连接参数中,如下所示

import ssl

logging.basicConfig(level=logging.DEBUG)

credentials = pika.PlainCredentials('*******', '**********')
context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
parameters = pika.ConnectionParameters(host='a-25c34e4d-a3eb-32de-abfg-l95d931afc72f.mq.us-west-1.amazonaws.com',
                                       port=5671,
                                       virtual_host='/',
                                       credentials=credentials,
                                       ssl_options=pika.SSLOptions(context)
                                       )

connection = pika.BlockingConnection(parameters)
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案。帮助我解决了同样的问题。谢谢! (2认同)