Pika 无法使用来自远程 IP 地址的 RabbitMQ

Pika cannot consume RabbitMQ from remote IP address

我正在使用 Python 和 pika,因为我想使用 RabbitMQ 从一个服务器向另一个服务器发送数据。

我按照以下教程创建了消费者和生产者: https://www.rabbitmq.com/tutorials/tutorial-one-python.html

在同一台机器上,我可以将消息发送到本地主机并从本地主机读取,它会工作。

但是从一个服务器到另一个它会报错如ConnectionClosed, ProbableAccessDeniedError, ProbableAuthenticationError

我尝试创建具有管理员访问权限的凭据,而不是使用默认的 guest/guest 凭据。我还将超时从 0.25 增加到 2sec

 credentials = pika.credentials.PlainCredentials(server['username'], server['password'], erase_on_connect=False)

 connection = pika.BlockingConnection(pika.ConnectionParameters(host=server['ip'], credentials=credentials, socket_timeout=2))

我什至尝试从同一台机器发送和接收,但我没有指定 'localhost' 而是提供机器 IP 地址,这没有用

我发现问题出在托管制作人的远程服务器上。

我创建的用户是管理员用户,但缺少权限。

基本上这是解决方案(这是我最初忘记的第三行):

sudo rabbitmqctl add_user alex password
sudo rabbitmqctl set_user_tags alex administrator
sudo rabbitmqctl set_permissions -p / alex ".*" ".*" ".*"