RabbitMQ返回404由经纪人关闭

时间:2020-05-14 14:13:29

标签: python docker rabbitmq pika

我有一个使用以下命令运行的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()

1 个答案:

答案 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()