【问题标题】:Websphere equivalent for Weblogic bridge level message filterWeblogic 桥级消息过滤器的 Websphere 等效项
【发布时间】:2013-01-15 02:52:55
【问题描述】:

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

Websphere 可以达到同样的效果吗?

具体来说,我正在尝试实现这种情况。

我有一个接收消息的源队列。每条消息都将设置一个自定义 JMS 属性。我想将源队列上的消息转发到基于 JMS 属性及其值的单独队列。这很容易在 WLS 中使用带有过滤功能的消息桥进行配置。我怎样才能在 WAS 中做同样的事情?

谢谢 萨维奥

【问题讨论】:

  • 您使用的是 SIB 还是其他消息传递提供商?
  • 我们使用默认的 SIB。

标签: jms websphere weblogic


【解决方案1】:

您需要使用SIB Mediation

WAS 信息中心有一个名为 writing a routing mediation 的示例,这似乎是您所需要的。

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

【讨论】:

  • 感谢 Aviram。我们试图避免使用中介或必须编写更多自定义代码。似乎这是 WAS 的唯一选择。
【解决方案2】:

如果不编写自定义代码(根据您对 Aviram 答案的评论),不可能实现完全相同的效果,但仍然可以实现相同的效果;

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

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

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

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

消息选择器

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

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

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

【讨论】:

  • 感谢 Kurtcebe。这确实是可能的。我们没有这样做的原因是因为它意味着将消息过滤责任转移给客户端。这也意味着行为不端的客户可能会消费适合他们的消息。
【解决方案3】:

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

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

这符合我们的目的。希望对你有帮助...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-22
    • 2013-03-30
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-18
    相关资源
    最近更新 更多