13.4. 过滤 XML 消息
AMQ Broker 提供了一种使用 XPath 的 XML 正文过滤文本消息的方法。XPath (XML 路径语言)是从 XML 文档选择节点的查询语言。
注意
仅支持基于文本的消息。不支持过滤大型消息。
要过滤基于文本的消息,您需要创建一个 XPATH '<xpath-expression> 形式的 Message Selector。
Message Body 示例
<root>
<a key='first' num='1'/>
<b key='second' num='2'>b</b>
</root>
根据 XPath 查询过滤
XPATH 'root/a'
警告
由于 XPath 应用到消息的正文,并且需要解析 XML,因此过滤可能比普通的过滤器要慢得多。
使用以下协议在生成者和消费者之间支持 XPath 过滤器:
- OpenWire JMS
- 核心(和核心 JMS)
- STOMP
- AMQP
配置 XML Parser
默认情况下,Broker 使用的 XML Parser 是 JDK 使用的 Platform 默认 DocumentBuilderFactory 实例。
用于 XPath 默认配置的 XML 解析器包括以下设置:
但是,为了处理任何特定于实施的问题,可以通过在 artemis.profile 配置文件中配置系统属性来自定义功能。
org.apache.activemq.documentBuilderFactory.feature:prefix
功能配置示例
-Dorg.apache.activemq.documentBuilderFactory.feature:http://xml.org/sax/features/external-general-entities=true