ActiveMQ(NMS) :有没有办法 运行 在 queue 上进行查询以找出具有特定 header 值的所有消息?

ActiveMQ(NMS) : Is there a way to run a query on the queue to find out all messages with certain header values?

我正在使用 ActiveMQ 存储消息以备后用。它按预期工作,但我需要适应一个我无法弄清楚的特定场景。 简短的问题是这样的。

Is there a way to run a query on the queue to find out all messages with certain header values?

详细的问题是这样的:

所以有一组数据在多条消息中传入,要求只有在所有消息都传入后才使用该数据。 因此,如果数据集有 50 条消息,我需要等待这 50 条消息,然后读入它们。 我在每条消息中添加 headers 以表示它们属于某个集合。 比如 "TotalSets"=50 , "SetId"=39 。 如果特定批次的所有集合都已到达,我想编写一个线程来继续跟踪。

NMS 是等同于 JMS 消息传递 API 的 .NET,因此过滤消息的方法与 JMS 中的相同,您的订阅在创建时应用 JMS Message Selector 来告诉代理什么消息它感兴趣。创建 MessageConsumer 实例的会话方法有一些变体,这些变体使用 JMS 定义的语法接受选择器,这是您过滤消息的方式。