Python Pika worker在运行channel.declare_队列时引发异常
我正在编写一个python客户端来接受来自RabbitMQ代理的作业消息,并处理作业,将结果返回给另一台服务器。向RabbitMQ代理发送消息的脚本启动正常,但我的工作人员在运行通道时抛出以下错误。declare_queue(queue='task_queue')) pika.exceptions.AMQPChannelError:(406,“前置条件_失败-vhost'/'中队列'task_queue'的参数不等效”) 客户:Python Pika worker在运行channel.declare_队列时引发异常,python,rabbitmq,amqp,pika,Python,Rabbitmq,Amqp,Pika,我正在编写一个python客户端来接受来自RabbitMQ代理的作业消息,并处理作业,将结果返回给另一台服务器。向RabbitMQ代理发送消息的脚本启动正常,但我的工作人员在运行通道时抛出以下错误。declare_queue(queue='task_queue')) pika.exceptions.AMQPChannelError:(406,“前置条件_失败-vhost'/'中队列'task_queue'的参数不等效”) 客户: import pika connection = pika
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(host=cmdargs.server))
channel = connection.channel()
channel.queue_declare(queue='task_queue')
channel.basic_qos(prefetch_count=1)
channel.basic_consume(ProcJobCallback, queue='task_queue')
channel.start_consuming()
与RabbitMQ交互的服务器方法:
def addNewJob(self, newJob):
self.jobList.append(newJob)
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
channel = connection.channel()
channel.queue_declare(queue='task_queue')
for tile in newJob.TileStatus:
message = "{0},{1},{2}".format(newJob, tile[0], tile[1])
channel.basic_publish(exchange='', routing_key='task_queue', body=message, properties=pika.BasicProperties(delivery_mode = 2, ))
connection.close()
非常感谢您的帮助或见解
编辑:我发现了上面列出的代码出现错误的原因。发布邮件时,我指定了delivery_mode=2,但在声明队列时,我忘记添加Durable=True参数。您确定要连接到发布服务器和用户端的同一服务器(主机)吗
connection = pika.BlockingConnection(pika.ConnectionParameters(host=cmdargs.server))
connection = pika.BlockingConnection(pika.ConnectionParameters(host='localhost'))
如果您的队列是持久的,只需删除声明“channel.queue\u declare(queue='task\u queue')”,这在您的情况下就足够了。我在尝试使用持久=True使队列消息持久化时遇到了同样的问题 尝试重命名队列名称,它与我的脚本配合得很好。可能会杀死队列新建任务,然后重新运行脚本