我正在使用JMS实现Pub / Sub模型。我从Pub向所有订阅者发送消息。我希望订阅者应该根据实际消息体中的某些字符串获取过滤消息。
例如,订阅者订阅主题' sports'并且只应该收到那些有关键字'板球'在消息文本正文中。
P.S。我不想使用消息选择器。
我该如何实现呢。
谢谢和问候。
答案 0 :(得分:1)
您不能使用任何机制根据Message Body内容过滤主题上的消息。通常使用 JMS选择器来过滤消息,但即使这样也不适用于正文内容:
:一种 消息选择器无法根据消息正文的内容选择消息。。
这里的问题是您必须首先接收(即消费)消息,然后提取其内容,从而排除任何类型的Body过滤的情况。
答案 1 :(得分:1)
看看阿帕奇骆驼。它提供了一种路由和过滤消息的方法,并与Active MQ实现了出色的集成。
答案 2 :(得分:0)
你不能用JMS本身做到这一点。
您通常做的是根据邮件类型(订单,客户潜在客户,发票,状态报告或诸如此类的内容)使发送应用程序使用不同的队列。如果您不想使用单独的队列,则至少可以使发送应用程序使用某些属性标记消息,您可以使用选择器对其进行过滤。
在某些情况下,您仍然需要根据邮件的实际内容进行路由和/或过滤,因此可以为这种事情量身定制软件。 Apache Camel和Mule ESB是两种选择。