13.4. 过滤 XML 消息
AMQ Broker 提供了使用 XPath 过滤包含 XML 正文的文本信息的方法。XPath (XML 路径语言)是从 XML 文档中的选择节点的查询语言。
注意
仅支持基于文本的消息。不支持过滤大型消息。
要过滤基于文本的消息,您需要创建一个 XPATH '<xpath-expression>
形式的 Message Selector。
消息正文示例
<root> <a key='first' num='1'/> <b key='second' num='2'>b</b> </root>
基于 XPath 查询过滤
PATH 'root/a'
警告
由于 XPath 适用于消息的正文,并且需要解析 XML,因此过滤可能比普通过滤器要显著慢。
使用以下协议,支持 XPath 过滤器,并在生成者和消费者之间进行支持:
- OpenWire JMS
- Core (和 Core JMS)
- STOMP
- AMQP
配置 XML 解析器
默认情况下,Broker 使用的 XML 解析程序是 JDK 使用的平台默认 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