13.4. 过滤 XML 消息
AMQ Broker 提供了过滤文本消息的方式,其包含使用 XPath 的 XML 正文。XPath(XML Path Language)是用于从 XML 文档选择节点的查询语言。
注意
仅支持基于文本的信息。不支持过滤大型消息。
要过滤基于文本的消息,您需要创建一个 XPATH '<xpath-expression>
形式的 Message Selector。
Message Body 的示例
<root> <a key='first' num='1'/> <b key='second' num='2'>b</b> </root>
基于 XPath 查询进行过滤
PATH 'root/a'
警告
因为 XPath 适用于邮件的正文,因此需要解析 XML,所以过滤速度明显比普通过滤器要慢。
XPath 过滤器支持使用下列协议的生产者和使用者之间的差别:
- OpenWire JMS
- 内核(和核心 JMS)
- STOMP
- AMQP
配置 XML 解析器
默认情况下,代理使用的 XML 解析程序是 JDK 使用的平台默认 DocumentBuilderFactory 实例。
用于 XPath 默认配置的 XML 解析程序包括以下设置:
但是,为了处理任何特定于实施的问题,可以在 artemis.profile
配置文件中配置 System 属性来自定义功能。
org.apache.activemq.documentBuilderFactory.feature:prefix
功能配置示例
-Dorg.apache.activemq.documentBuilderFactory.feature:http://xml.org/sax/features/external-general-entities=true