【问题标题】:How to connect to a Rabbit-MQ server over the network?如何通过网络连接到 Rabbit-MQ 服务器?
【发布时间】:2014-08-25 21:23:21
【问题描述】:

我在 3 台不同的计算机上有 3 个客户端。

客户端 A 正在运行 RabbitMQ 服务器。

客户 B 是生产者。

客户 C 是消费者。

我已经浏览了 RabbitMQ 网站上的教程(使用 Python),我认为将它们从 localhost 更改为通过网络工作只需在行中输​​入 IP:

connection = pika.BlockingConnection(pika.ConnectionParameters('localhost'))

他们的导游甚至说

如果我们想连接到另一台机器上的代理,我们只需在此处指定其名称或 IP 地址。

那么我做错了什么,如何让客户端通过网络与服务器通信?

编辑:为了澄清 - 我正在使用 rabbitmq-server 命令运行服务器。 客户端使用上述线路连接到代理。

【问题讨论】:

  • 你遇到了什么错误?
  • pika.exceptions.AMQPConnectionError: Connection to <ip>:<port> failed: [Errno 61] Connection refused.

标签: python rabbitmq amqp


【解决方案1】:

默认情况下,它将尝试使用 guest 作为用户 ID 和密码进行连接,并且默认情况下,guest 无法在远程计算机上工作,您需要创建一个新用户并在连接中使用这些凭据 例如

credentials = pika.PlainCredentials('username', 'password')
parameters = pika.ConnectionParameters('serverip', credentials=credentials) 

或修改来宾用户以允许其从远程计算机连接。前者可能是更好的选择,后一种选择的说明可以在这里找到。

http://blog.shippable.com/rabbitmq-on-docker-fix

【讨论】:

  • 关于您所说的,凭据是使用rabbitmqctl 设置的。我对么?另外,rom rabbitmq 的站点和示例配置文件我知道我需要更改主机地址,因为它默认设置为:{tcp_listeners, [{"127.0.0.1", 5672},...}。这是正确的吗?
  • 也许你可以用rabbitmqctl做,我用管理插件rabbitmq.com/management.html
  • 在启用guest方面,这不是更改主机地址的问题,而是从一个名为loopback_users的组中删除guest,该组的成员只能从localhost或127.0.0.1连接.
【解决方案2】:

你可以这样做:

credentials = pika.PlainCredentials('username','password')
parameters = pika.URLParameters('amqp://username:password@localhost:5672/%2F')
connection = pika.BlockingConnection(parameters)

如果您想连接到不同机器上的代理,请将上面的“localhost”更改为该机器的名称或 IP 地址: 例如在客户端 B 上:

parameters = pika.URLParameters('amqp://username:password@(ip of client A):5672/%2F')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-05
    • 2020-07-15
    • 2014-07-15
    • 2014-05-31
    • 2015-12-06
    • 2020-02-25
    • 2015-05-15
    相关资源
    最近更新 更多