【问题标题】:rabbitmq: how to setup routing keys per queue (and message) so that it can get messages for that queue and message destined for all queues in a topic?rabbitmq:如何设置每个队列(和消息)的路由键,以便它可以获取该队列的消息和发往主题中所有队列的消息?
【发布时间】:2018-08-15 20:21:41
【问题描述】:

我对消息传递和rabbitmq 非常陌生,并尝试在rabbitmq 控制面板中设置绑定以支持以下场景(请原谅伪):

  1. 队列名为one
  2. 队列名为two

我想发送消息:

  1. 仅适用于one
  2. 仅适用于two
  3. onetwo

目前rabbitmq设置如下:

to: one; routing: one; to: two; routing: two

当我发布消息时,我使用这种设置:

routing key: one -> 消息被传递到one

routing key: two -> 消息被传递到two;

我使用什么路由键值发布消息以便两个队列都接收它?或者我如何设置我的绑定。

【问题讨论】:

    标签: rabbitmq


    【解决方案1】:

    您可以为路由键设置通配符。

    你可以做routing_key: 'all'routing_key: 'all.one'routing_key: 'all.two'

    显然该示例是人为设计的,您可以选择更有意义的路由键名称,例如 "logging.telegraf""logging.events" 或“weather.houston”等。基本上,您可以使用点分符号设置一些层次结构。

    希望对您有所帮助。

    查看有关主题的官方文档以及*# 的使用 http://www.rabbitmq.com/tutorials/tutorial-five-ruby.html

    【讨论】:

    • 这对我不起作用:all.* 没有传送到两个队列。当路由键设置为 all.one 时,消息将传送到 all.one;当路由键设置为 all.two 时,消息将传送到 all.two
    • 您可以使用您期望的模式创建多个绑定。因此,对于每个队列,您必须为all 创建绑定并为all.one/all.two 创建绑定
    • 这行得通。使用 all.* 不起作用,所以也许您可以编辑您的答案以便我接受?
    猜你喜欢
    • 2013-08-09
    • 2018-08-10
    • 2013-05-17
    • 1970-01-01
    • 2011-12-29
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多