Websphere等效于Weblogic桥级消息过滤器

时间:2013-01-31 04:20:50

标签: jms websphere weblogic

在weblogic中,可以在两个JMS消息队列之间创建消息桥。配置此网桥时,可以应用消息过滤器,以便网桥仅路由与过滤器匹配的消息。

是否可以通过Websphere实现相同的目标?

具体而言,我正在尝试实现这种情况。

我有一个接收消息的源队列。每条消息都将设置自定义JMS属性。我想转发源队列上的消息,根据JMS属性及其值分离队列。这可以使用带过滤的消息桥在WLS中轻松配置。我怎样才能在WAS中做同样的事情?

由于 Savio的

3 个答案:

答案 0 :(得分:0)

您需要使用SIB Mediation

WAS信息中心有一个名为writing a routing mediation的示例,它看起来就像您需要的那样。

在示例的底部有一个指向what to do next的链接,该链接还解释了如何配置WAS以使用该中介。

答案 1 :(得分:0)

无需编写自定义代码(根据您对Aviram的回答的评论),不可能实现完全相同的目标,但仍然可以达到同样的效果;

您说'源队列'根据自定义JMS属性将消息分发到其他“单独队列”。我假设你有MDB(消息驱动的bean)配置为处理这些单独队列中的消息。

您可以使用WebSphere执行的操作是直接从“源队列”将消息分发到这些MDB,而无需将它们过滤/分发到单独的队列。

这是通过使用 JMS消息选择器来管理的。您可以使用激活规范定义将所有MDB指向源队列,并为每个(每种类型的消息一个)MDB定义一个与您在WLS中使用的JMS消息选择器匹配的JMS消息选择器。这样,每条消息仅传递MDB,其过滤器与消息的属性匹配。这有效地过滤/分发消息到不同的MDB,如在WLS中。

您可以在信息中心阅读有关配置消息选择器(during development in RADat/after deploy time)的详细信息。以下是一个引用,让您了解它的外观;

  

messageSelector

     

此属性确定JMS消息选择器   用于选择消息驱动bean的消息   收到。例如:

JMSType='car' AND color='blue' AND weight>2500
     

选择器字符串可以引用JMS消息头中的字段   消息属性中的字段。消息选择器无法引用   消息体价值。

答案 2 :(得分:0)

为了记录,我们最终在应用程序中编写了自己的路由算法,以确保将消息发送到每个客户端的单独队列。这样我们就可以独立于应用服务器实现,并且整个应用服务器的集成工作是相同的,即每个集成客户端添加自定义队列。

简而言之,我们发布了必须设置的JMS自定义属性。使用已发布的约定,我们查找队列并将响应发送到队列。如果未设置该属性,则会创建一个默认队列来路由所有消息。如果设置了属性,则无法找到队列,则会引发异常并停止处理。

这符合我们的目的。希望它有所帮助...