根据正文内容过滤JMS

时间:2013-04-24 09:56:41

标签: jms publisher subscriber

我正在使用JMS实现Pub / Sub模型。我从Pub向所有订阅者发送消息。我希望订阅者应该根据实际消息体中的某些字符串获取过滤消息。

例如,订阅者订阅主题' sports'并且只应该收到那些有关键字'板球'在消息文本正文中。

P.S。我不想使用消息选择器。

我该如何实现呢。

谢谢和问候。

3 个答案:

答案 0 :(得分:1)

您不能使用任何机制根据Message Body内容过滤主题上的消息。通常使用 JMS选择器来过滤消息,但即使这样也不适用于正文内容:

来自The Java EE 6 Tutorial

  

:一种   消息选择器无法根据消息正文的内容选择消息。

这里的问题是您必须首先接收(即消费)消息,然后提取其内容,从而排除任何类型的Body过滤的情况。

答案 1 :(得分:1)

看看阿帕奇骆驼。它提供了一种路由和过滤消息的方法,并与Active MQ实现了出色的集成。

答案 2 :(得分:0)

你不能用JMS本身做到这一点。

您通常做的是根据邮件类型(订单,客户潜在客户,发票,状态报告或诸如此类的内容)使发送应用程序使用不同的队列。如果您不想使用单独的队列,则至少可以使发送应用程序使用某些属性标记消息,您可以使用选择器对其进行过滤。

在某些情况下,您仍然需要根据邮件的实际内容进行路由和/或过滤,因此可以为这种事情量身定制软件。 Apache CamelMule ESB是两种选择。