不同机器上的RabbitMQ代理

2 投票
2 回答
4101 浏览
提问于 2025-04-18 05:45

在rabbitMQ的教程部分,有一个hello world示例,它只要求把主机名换成另一台机器的IP地址。但是我试了之后并没有成功。我还尝试过将外部IP地址绑定到Rabbit MQ服务器,但也没有用。请问我还需要对配置文件或代码做些什么吗?

这是我发送的代码:

#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(
    host='ip_address'))
channel = connection.channel()

channel.queue_declare(queue='hello')

channel.basic_publish(exchange='',
                  routing_key='hello',
                  body='Hello World!')
print " [x] Sent 'Hello World!'"
connection.close()

这是我在另一台机器上运行的接收代码:

#!/usr/bin/env python
import pika

connection = pika.BlockingConnection(pika.ConnectionParameters(
    host='ip_address'))
channel = connection.channel()

channel.queue_declare(queue='hello1')

print ' [*] Waiting for messages. To exit press CTRL+C'

def callback(ch, method, properties, body):
    print " [x] Received %r" % (body,)

channel.basic_consume(callback,
                  queue='hello',
                  no_ack=True)

channel.start_consuming()

我遇到的错误是:

No handlers could be found for logger "pika.adapters.base_connection"
Traceback (most recent call last):

File "send.py", line 25, in <module>
'ip_address'))
 File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py",    line 107, in __init__
   super(BlockingConnection, self).__init__(parameters, None, False)
 File "/usr/local/lib/python2.7/dist-packages/pika/adapters/base_connection.py", line 62, in __init__
on_close_callback)
 File "/usr/local/lib/python2.7/dist-packages/pika/connection.py", line 590, in __init__
self.connect()
 File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 206, in connect
   if not self._adapter_connect():
 File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 275, in _adapter_connect
raise exceptions.AMQPConnectionError(1)
pika.exceptions.AMQPConnectionError: 1

非常感谢大家抽时间来帮助我。

2 个回答

0

我在本地为两台机器做了一些不同的设置,也许其中一些可以帮到你:

在服务器上

重要提示:要把你的节点从配置文件 rabbitmq-env.conf 中改成机器的网络 IP 地址。

然后重启 RabbitMQ。

 brew services stop rabbitmq 
 brew services start rabbitmq

*你可以通过以下方式找到 RabbitMQ 的配置文件:

find / -name rabbitmq-env.conf

在项目中:

credentials = pika.PlainCredentials(env.RABBITMQ_USER, env.RABBITMQ_PASSWORD)
    connection = pika.BlockingConnection(pika.ConnectionParameters(env.RABBITMQ_IP, port=env.RABBITMQ_PORT, virtual_host='/', credentials=credentials))

撰写回答