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

Connect to RabbitMQ instance remotely (created on AWS)

我在连接到 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)

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

您正在尝试通过 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)