在weblogic中,可以在两个JMS消息队列之间创建消息桥。配置此网桥时,可以应用消息过滤器,以便网桥仅路由与过滤器匹配的消息。
是否可以通过Websphere实现相同的目标?
具体而言,我正在尝试实现这种情况。
我有一个接收消息的源队列。每条消息都将设置自定义JMS属性。我想转发源队列上的消息,根据JMS属性及其值分离队列。这可以使用带过滤的消息桥在WLS中轻松配置。我怎样才能在WAS中做同样的事情?
由于 Savio的
答案 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 RAD或at/after deploy time)的详细信息。以下是一个引用,让您了解它的外观;
messageSelector
此属性确定JMS消息选择器 用于选择消息驱动bean的消息 收到。例如:
JMSType='car' AND color='blue' AND weight>2500
选择器字符串可以引用JMS消息头中的字段 消息属性中的字段。消息选择器无法引用 消息体价值。
答案 2 :(得分:0)
为了记录,我们最终在应用程序中编写了自己的路由算法,以确保将消息发送到每个客户端的单独队列。这样我们就可以独立于应用服务器实现,并且整个应用服务器的集成工作是相同的,即每个集成客户端添加自定义队列。
简而言之,我们发布了必须设置的JMS自定义属性。使用已发布的约定,我们查找队列并将响应发送到队列。如果未设置该属性,则会创建一个默认队列来路由所有消息。如果设置了属性,则无法找到队列,则会引发异常并停止处理。
这符合我们的目的。希望它有所帮助...