如何区分来自同一队列的不同JMS文本消息?

时间:2019-05-07 15:56:23

标签: java jms activemq

我有一个要连接的AMQ队列。发布者正在发送JMS TextMessage。消息具有不同类型:foo更新,bar更新,baz更新等,全部在单个队列上。

所有类型的有效载荷/消息主体都是JSON,并且它们的模式具有明显的重叠(但没有直接的类型信息)。

发布团队说:“在消息的字符串/文本中搜索foo,如果存在,则为foo更新的消息。”

这听起来是错误的。

我可以使用(正在探索中)JMS消息中可能包含标头信息,但是假设我可以影响(但不一定更改任何内容),那么处理此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

使用JMS消息选择器 参见:Message Selectors

答案 1 :(得分:1)

如果您对使用JMS主题有影响力,则应该使用它。就像REST URL一样,您可以使用主题来指示关于它们的资源和操作:foo / create,foo / update,bar / update 然后,JMS Broker可以帮助您将不同的消息有效地路由到不同的使用者。例如。一个消费者订阅foo/*,另一个消费者订阅*/update

如果您陷于队列中,发布者应添加其他信息作为标题属性,例如type = foo和action = update。然后,您的使用者可以指定JMS选择器,例如“ action ='update'”,以仅接收某些消息。

否则,您实际上会被限制在查看内容中:-(