RabbitMQ headers 交换路由:匹配所有列出的 headers

RabbitMQ headers exchange routing: match all listed headers

我有很多具有不同功能集的消费者,所以我希望路由消息进行处理以更正一个。我决定使用 headers 交换并在消息 headers 中指定必要的功能,但这里遇到了障碍。

在 rabbitMQ 中有绑定参数 x-match,它只能取值 anyall (https://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2013-July/028575.html ).相反,绑定时每个消费者都有可用功能的大列表(其中大多数是 true/false,但也有字符串),我将其指定为绑定参数以及 x-match 参数。但是,当我发布消息时,我只想指定必要的 headers,例如,具有特定值的 feature-1feature-7 .发布消息时,我什至不知道所有可用的消费者功能。问题来了:如果我在 x-match==all 时错过了一些绑定参数,消息将不会被路由,如果我将 x-match 设置为 any,唯一匹配的 header足以路由消息 - 尽管另一个 header 的值可能不匹配。

举个例子,让我们考虑具有特征的消费者:country=US, f1=true, f2=true, f3=false

所以我可能误解了一些东西,但我正在寻找对我来说最简单的解决方案:如何根据必要功能列表将消息路由到正确的消费者。我想为 x-match 参数使用类似 all-specified 的值,它不会要求列出所有可用的功能,但需要所有给定的 header 完全匹配。

的确,只有自己的交流可能对我的目的有帮助。如果我在 erlang 上成功了,我会在这里报告。

更新

我设法编写了适合我目的的插件。可能它并不完美,但目前对我来说很好用。

https://github.com/senseysensor/rabbitmq-x-features-exchange