【问题标题】:JMS with content-base filter带有基于内容的过滤器的 JMS
【发布时间】:2020-02-13 04:18:14
【问题描述】:

是否可以使用 JMS 进行基于内容的过滤?

IBM MQ 发布/订阅似乎允许基于内容的过滤 https://www.ibm.com/support/knowledgecenter/en/SSKM8N_8.0.0/com.ibm.etools.mft.doc/bq13460_.htm https://www.ibm.com/support/knowledgecenter/en/SSKM8N_8.0.0/com.ibm.etools.mft.doc/bq13360_.htm

我试图用我的 JMSListener 找到一种方法来过滤 Body 元素,但我无法让它工作..

【问题讨论】:

  • 我相信是outside the JMS Spec>The message consumer then receives only messages whose headers and properties match the selector. ... A message selector cannot select messages on the basis of the content of the message body.我不知道是否有办法以某种方式附加那些专有的 IBM 过滤器。
  • IBM MQ 不能基于正文进行过滤,只能基于消息属性。
  • @JoshMc 你说的完全正确,我认为我们可以,但我意识到只有使用 Websphere Message Broker 才有可能。谢谢

标签: java ibm-mq spring-jms


【解决方案1】:

IBM MQ 不能直接基于正文进行过滤,只能基于消息属性。 IBM 声明扩展消息选择提供程序可以根据消息负载进行消息选择,但据我所知,唯一可用的扩展消息选择提供程序是 ACE/IIB/WMB。


请查看 IBM 知识中心页面IBM MQ 9.1.x>IBM MQ>Developing applications>Developing JMS and Java applications>Using IBM MQ classes for JMS>Writing IBM MQ classes for JMS applications>JMS messages>Message selectors in JMS

属性值可能与消息正文中的值重复。 JMS 没有为属性定义策略。但是,应用程序开发人员必须意识到,JMS 提供程序可能比消息属性中的数据更有效地处理消息正文中的数据。为了获得最佳性能,应用程序必须仅在需要自定义消息头时才使用消息属性。这样做的主要原因是支持自定义消息选择。

JMS 消息选择器允许客户端通过使用消息头来指定它感兴趣的消息。只有标头与选择器匹配的消息才会被传递。

消息选择器不能引用消息正文值。

A message selector matches a message when the selector evaluates to true when the message header field and property values are substituted for their corresponding identifiers in the selector.

消息选择器是一个字符串,其语法基于 SQL92 条件表达式语法的子集。评估消息选择器的顺序是在优先级内从左到右。您可以使用括号来更改此顺序。预定义的选择器字面量和运算符名称在这里用大写字母书写;但是,它们不区分大小写。


另请查看 IBM 知识中心页面IBM MQ 9.0.x>IBM MQ>Developing applications>Application development concepts>IBM MQ messages>Selecting messages from queues>Selecting on the content of a message

可以根据消息负载内容的选择进行订阅(也称为内容过滤),但是 IBM® 无法直接决定将哪些消息传递给此类订阅MQ;而是需要扩展消息选择提供程序(例如 IBM Integration Bus)来处理消息。

【讨论】:

    猜你喜欢
    • 2013-04-17
    • 2019-10-05
    • 1970-01-01
    • 1970-01-01
    • 2018-09-07
    • 1970-01-01
    • 2017-09-08
    • 2013-04-28
    相关资源
    最近更新 更多