1

我正在尝试用 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 寻求帮助

4

1 回答 1

1

这是一个完全的猜测,因为我看不到你的 rabbitmq 服务器..

如果你打开 RabbitMQ 管理网站并查看你的 exchange,你可能会看到 exchange 绑定到路由键 10 和 11 的队列,两者都绑定到同一个队列。

由于两者都进入同一个队列,因此您的消息将始终传递到该队列,消费者将始终接收消息

再说一次,我猜是因为我看不到你的服务器。但请检查服务器以确保您没有剩余/额外的绑定

于 2016-02-29T13:37:01.690 回答