消息队列可以通过标签过滤消息

时间:2017-03-27 20:46:03

标签: message-queue

我需要一个消息队列,我可以将消息与标签关联起来,只接收与某个标签关联的消息。

例如,假设{id:1, tags: "tag1", "tag2"}是ID为 1 的消息,并与标记“ tag1 ”和“ tag2 ”相关联”。所以当我从队列中请求“ tag1 ”或“ tag2 ”而不是“ tag3”时,我希望收到 1 ”。

我还需要此功能来支持一次性投放,这意味着当我收到上述消息时,当要求 tag1 tag2 时,它将不会再次投放(至少在可见性超时内)

使用用户定义的属性过滤消息的MQ也可以工作;但它应该保证一次性传递信息。所以AMQP中的路由(例如在RabbitMQ中)对我来说不起作用,因为我相信它会在每个队列中创建一个消息副本。

我已经调查了几个MQ实现(RabbitMQ,ActiveMQ,SQS,MSMQ等),但未能找到此功能的实现。是否有支持此类消息过滤的MQ?

1 个答案:

答案 0 :(得分:0)

由于您正在查看RabbitMQ,ActiveMQ,SQS,MSMQ,您可能还有兴趣查看ZeroMQnanomsgYAMI4

他们有PUB / SUB机制,在客户端具有过滤功能。 客户端可以接收带有特定标记的消息。

可以使用专用线程或多个连接来安排收听许多标签。

/ ZeroMQ

中的PUB / SUB

/ nanomsg

中的PUB / SUB

/ YAMI4

中的PUB / SUB

我在C / C ++应用程序的生产中使用nanomsg,在Java app中使用Java绑定。