0

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

例如,订阅者订阅了主题“体育”,并且应该只接收那些在消息正文中包含关键字“板球”的帖子。

ps 我不想使用消息选择器。

我该如何实现这一点。

谢谢并恭祝安康。

4

3 回答 3

1

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

来自Java EE 6 教程

消息选择器不能根据消息正文的内容来选择消息。.

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

于 2013-04-24T11:03:40.090 回答
1

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

于 2013-04-24T11:58:47.623 回答
0

JMS 本身无法做到这一点。

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

在某些情况下,您仍然需要根据消息的实际内容进行路由和/或过滤,有专门为这类事情量身定制的软件。Apache CamelMule ESB是两个选项。

于 2013-04-26T05:18:05.250 回答