[英]Pika worker throws exception when running channel.declare_queue
我正在編寫一個python客戶端來接受來自RabbitMQ代理的作業消息並處理作業,並將結果返回給另一台服務器。 我向RabbitMQ代理發送消息的腳本啟動正常,但是我的工作人員在運行channel.declare_queue(queue ='task_queue')時拋出以下錯誤
pika.exceptions.AMQPChannelError:(406,“PRECONDITION_FAILED - vhost中隊列'task_queue'的參數'/'不等效”)
客戶:
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_declare(queue ='task_queue')”,這在你的情況下就足夠了。
當我嘗試使用durable = True使隊列msg持久化時,我遇到了同樣的問題。
嘗試重命名隊列名稱,它適用於我的腳本。 也許殺掉隊列new_task ,重新運行你的腳本也行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.