我有一个使用以下命令运行的RabbitMQ docker映像:
docker pull rabbitmq
sudo docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq
然后,我尝试使用pika
模块运行python客户端,以获取与Rabbitmq服务器的连接。
在启动服务器之前,它给出了ConnectionRefusedError
,但是在运行图像之后,出现以下错误:
pika.exceptions.ChannelClosedByBroker: (404, "NOT_FOUND - no queue 'logs' in vhost '/'")
这是我用来建立连接的python脚本:
from connection_manager import ConnectionManager
from mq_handler import MessageBroker
rabbit_mq_conn = ConnectionManager.init_connection()
mb = MessageBroker(rabbit_mq_conn)
if __name__ == "__main__":
mb.run()
答案 0 :(得分:1)
这是一段与pika和Rabbit MQ docker容器配合使用的代码。它至少解决了您似乎遇到的一个问题,即在使用队列之前不创建队列。
import pika
url = <rabbitMQ URL>
params = pika.URLParameters(url)
params.socket_timeout = 5
connection = pika.BlockingConnection(params) # Connect to CloudAMQP
channel = connection.channel() # start a channel
channel.queue_declare(queue='my_channel') # Declare a queue
# send a message
channel.basic_publish(exchange='', routing_key='my_channel', body='My message')
connection.close()