第 15 章 filter Expressions and Message Selectors
JBoss EAP 中的 messaging-activemq
子系统基于 SQL 92 表达式语法的子集提供了强大的过滤器语言。
它与用于 Jakarta 消息传递选择器的语法相同,但预定义的标识符是不同的。有关 Jakarta 消息传递选择器语法的文档,请参考 javax.jms.Message 接口 Javadoc。
filter
属性可以在配置中的多个位置找到。
预定义队列.在预先定义队列时,可以为其定义过滤器表达式。只有与过滤器表达式匹配的消息才会进入队列。以下配置片段显示了包括过滤器的队列定义:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要在管理 CLI 中使用选择器创建队列,请使用以下命令:
jms-queue add --queue-address=QUEUE_ADDRESS --selector=FILTER_EXPRESSION
jms-queue add --queue-address=QUEUE_ADDRESS --selector=FILTER_EXPRESSION
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 核心网桥可以通过可选过滤器表达式定义,只有匹配的消息才会桥接。以下是来自示例配置文件的代码片段,其中
messaging-activemq
子系统包含具有过滤器的网桥。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可以通过可选的过滤器表达式来定义转换,只有匹配的消息才会被移出。如需更多信息,请参阅 Diverts。以下示例片段显示了使用过滤器的 Divert:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Jakarta 消息传递选择器表达式和 JBoss EAP 消息传递核心过滤器表达式之间存在一些区别。Jakarta 消息传递选择器表达式在 Jakarta 消息传递消息上运行,而 JBoss EAP 消息传递核心过滤器表达式则在核心消息上运行。
在核心过滤器表达式中可以使用以下标识符来指代核心消息的属性:
-
AMQPriority
.来引用消息的优先级。消息优先级是具有来自0 到 9
的有效值的整数。0
是最低优先级,9
是最高优先级。例如,AMQPriority
= 3 AND isolated = 'aardvark'。 -
AMQ 扩展.
参考邮件的过期时间:该值是一个长整数。 -
AMQDurable
。参考消息是否持久。该值是一个具有有效值的字符串:DURABLE
或NON_DURABLE
。 -
AMQTimestamp
.创建消息时的时间戳。该值是一个长整数。 -
AMQSize
:消息的大小,以字节为单位。该值是一个整数。
核心过滤器表达式中使用的任何其他标识符将被假定为消息的属性。