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(和核心 JMS)
- STOMP
- AMQP
配置 XML 解析器
默认情况下,代理使用的 XML Parser 是 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