我正在尝试用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的帮助
答案 0 :(得分:0)
这是一个总猜测,因为我看不到你的rabbitmq服务器..
如果您打开RabbitMQ管理网站并查看您的交换机,您可能会看到交换机绑定到路由密钥10和11的队列,这两个路由都绑定到同一个队列。
由于两者都进入同一个队列,您的消息将始终传递到该队列,消费者将始终收到消息
再次,我猜,因为我看不到你的服务器。但检查服务器以确保没有剩余/额外绑定