RabbitMQ主题交换消息1,部分或全部主题 - 如何构建它?

时间:2012-09-20 02:40:17

标签: rabbitmq webhooks

我有一条消息,需要由可变数量的队列处理。队列处理不同的目的 - 电子邮件,审计,webhook处理,s3存储。每条消息都可以包含任何,部分或全部主题作为目标。例如,我可以收到以下消息:

  • 消息1:audit.webhook
  • 消息2:webhook
  • 消息3:email.audit.webhook.s3

请注意,虽然我演示了4个主题,但可能有100个。这可以通过主题交换来处理吗?例如,主题 .webhook。是否会错过消息2?我可以将三个主题添加到队列webhook。*, .webhook。和* .webhook来处理所有潜在的消息,或者我是否必须知道webhook最终的位置 - 即: .webhook。。*或者 .webhook。是否足以捕获消息1和消息3?这可以通过主题交换处理,还是我看错了?

在进行额外测试后进行编辑

看来路由不像我希望的那样灵活。看来,为了做我想要实现的目标,我必须拥有例如。*。webhook的webhook队列的绑定,并且消息总是必须保持webhook在第四个位置,所以只有webhook的消息的路由键,必须是,例如“null,null,null,webhook,null,null等

我的测试是否正确?我问,因为这似乎不对。我认为有更多的灵活性,即:一种更好的方式来完成我想要完成的任务。

1 个答案:

答案 0 :(得分:1)

我认为#可能会有所帮助,因为它允许您拥有多个密钥。例如:

webhook.#

可以等同于:

webhook.*

webhook.*.*.*.*.*

或中间或更长的任何事物。我从来没有在密钥之前尝试过它:

#.webhook.#

但这应该是你调查的事情。

此外,我认为您的问题可以通过更好地设计路由/绑定密钥来解决。这些消息都进入同一个交换,因此应该具有相同的路由密钥模式。