选择器

功能 > 消费者功能 > 选择器

JMS 选择器

选择器是一种将过滤器附加到订阅以执行基于内容的路由的方式。选择器使用 SQL 92 语法定义,通常应用于消息头;无论是 JMS 消息上可用的标准属性,还是您可以通过 JMS 代码添加的自定义头。

这是一个示例

JMSType = 'car' AND color = 'blue' AND weight > 2500

有关选择器详细信息的更多文档,请参见 javax.jmx.Message 上的参考。
ActiveMQ Classic 支持一些 JMS 定义的属性,以及一些 ActiveMQ Classic 属性(请参见 消息属性),选择器可以使用这些属性。

使用 XPath 过滤消息

Apache ActiveMQ Classic 在处理包含 XML 主体的消息时也支持基于 XPath 的选择器。要使用 XPath 选择器,请使用以下语法

XPATH '//title\[@lang=''eng''\]'

Xalan 依赖项

XPath 支持需要 Xalan,它不是分发的一部分。Xalan jar 需要手动添加到 lib 目录或通过 maven 拉入您的应用程序

<dependency>
    <groupId>xalan</groupId>
    <artifactId>xalan</artifactId>
    <version>2.6.0</version>
</dependency>

字符串属性转换/针对 STOMP 消息的选择

JMS 规范指出,字符串属性在选择器中使用时不应该转换为数字。例如,如果一条消息的“age”属性设置为字符串“21”,那么以下选择器不应与其匹配:“age > 18”。由于 ActiveMQ Classic 支持 STOMP 客户端,它只能发送带有字符串属性的消息,因此该限制有些限制。如果您希望您的 JMS 选择器自动将字符串属性转换为相应的数字类型,只需在选择器前加上“convert_string_expressions:”。如果将上一个示例中的选择器更改为“convert_string_expressions:age > 18”,那么它将匹配该消息。

Apache、ActiveMQ、Apache ActiveMQ、Apache 羽毛徽标和 Apache ActiveMQ 项目徽标是 Apache 软件基金会的商标。版权所有 © 2024,Apache 软件基金会。根据 Apache 许可证 2.0 许可。