【问题标题】:RabbitMQ routing key does not routeRabbitMQ 路由键不路由
【发布时间】:2016-06-12 04:24:00
【问题描述】:

我正在尝试使用 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 message-queue rabbitmq-exchange


    【解决方案1】:

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

    如果你打开RabbitMQ管理网站查看你的exchange,你可能会看到exchange绑定到routing key 10和11的队列,这两个队列绑定到同一个队列。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 2016-12-18
      • 1970-01-01
      • 2022-11-05
      • 2017-03-30
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多