0

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

  • 消息 1:audit.webhook
  • 消息 2:网络钩子
  • 消息 3:email.audit.webhook.s3

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

额外测试后编辑

看来路由不像我希望的那样灵活。看来,为了实现我想要实现的目标,例如,我必须拥有一个用于 .webhook 队列的绑定.*.webhook,并且消息必须始终将 webhook 保持在第 4 位,因此仅发送到 webhook 的消息的路由键必须是,例如“null,null,null,webhook,null , 空等

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

4

1 回答 1

1

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

webhook.#

可能相当于:

webhook.*

或者

webhook.*.*.*.*.*

或介于两者之间或更长的任何东西。我之前从未尝试过关键,即:

#.webhook.#

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

此外,我认为您的问题可以通过更好地设计路由/绑定键来解决。这些消息都将发送到同一个交换器,因此它们应该具有相同的路由键模式。

于 2012-09-20T05:05:50.867 回答