RabbitMQ路由键不路由
RabbitMQ routing key does not route
我正在尝试用 RabitMQ 做一个简单的消息队列 我用 create_message
推送消息
然后尝试通过路由键获取消息。
当路由键相同时效果很好。问题是当路由密钥不同时,我一直在使用错误的路由密钥获取消息:
例如
def callback(ch, method, properties, body):
print("%r:%r" % (method.routing_key, body))
def create_message(self):
connection = pika.BlockingConnection(pika.ConnectionParameters(
'localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='www')
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='www',
routing_key="11",
body='Hello World1111!')
connection.close()
self.get_analysis_task_celery()
def get_message(self):
connection = pika.BlockingConnection(pika.ConnectionParameters(
'localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='www')
timeout = 1
connection.add_timeout(timeout, on_timeout)
channel.queue_bind(exchange="www", queue="hello", routing_key="10")
channel.basic_consume(callback,
queue='hello',
no_ack=True,
consumer_tag= "11")
channel.start_consuming()
我的输出示例:'11':'Hello World1111!'
我做错了什么?
tnx 寻求帮助
这完全是猜测,因为我看不到你的 rabbitmq 服务器..
如果你打开 RabbitMQ 管理网站并查看你的交换器,你可能会看到交换器绑定到路由密钥 10 和 11 的队列,两者都绑定到同一个队列。
由于两者都进入同一个队列,您的消息将始终传递到该队列,消费者将始终接收消息
同样,我猜是因为我看不到您的服务器。但请检查服务器以确保您没有剩余/额外的绑定
我正在尝试用 RabitMQ 做一个简单的消息队列 我用 create_message
推送消息然后尝试通过路由键获取消息。
当路由键相同时效果很好。问题是当路由密钥不同时,我一直在使用错误的路由密钥获取消息: 例如
def callback(ch, method, properties, body):
print("%r:%r" % (method.routing_key, body))
def create_message(self):
connection = pika.BlockingConnection(pika.ConnectionParameters(
'localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='www')
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='www',
routing_key="11",
body='Hello World1111!')
connection.close()
self.get_analysis_task_celery()
def get_message(self):
connection = pika.BlockingConnection(pika.ConnectionParameters(
'localhost'))
channel = connection.channel()
channel.exchange_declare(exchange='www')
timeout = 1
connection.add_timeout(timeout, on_timeout)
channel.queue_bind(exchange="www", queue="hello", routing_key="10")
channel.basic_consume(callback,
queue='hello',
no_ack=True,
consumer_tag= "11")
channel.start_consuming()
我的输出示例:'11':'Hello World1111!'
我做错了什么?
tnx 寻求帮助
这完全是猜测,因为我看不到你的 rabbitmq 服务器..
如果你打开 RabbitMQ 管理网站并查看你的交换器,你可能会看到交换器绑定到路由密钥 10 和 11 的队列,两者都绑定到同一个队列。
由于两者都进入同一个队列,您的消息将始终传递到该队列,消费者将始终接收消息
同样,我猜是因为我看不到您的服务器。但请检查服务器以确保您没有剩余/额外的绑定