第 15 章 filter Expressions and Message Selectors


JBoss EAP 中的 messaging-activemq 子系统基于 SQL 92 表达式语法的子集提供了强大的过滤器语言。

它与用于 Jakarta 消息传递选择器的语法相同,但预定义的标识符是不同的。有关 Jakarta 消息传递选择器语法的文档,请参考 javax.jms.Message 接口 Javadoc。

filter 属性可以在配置中的多个位置找到。

  • 预定义队列.在预先定义队列时,可以为其定义过滤器表达式。只有与过滤器表达式匹配的消息才会进入队列。以下配置片段显示了包括过滤器的队列定义:

    <subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">
      ...
      <queue
        name="myQueue"
        filter="FILTER_EXPRESSION"
        ...
      />
      ...
    </subsystem>
    Copy to Clipboard Toggle word wrap

    要在管理 CLI 中使用选择器创建队列,请使用以下命令:

    jms-queue add --queue-address=QUEUE_ADDRESS --selector=FILTER_EXPRESSION
    Copy to Clipboard Toggle word wrap
  • 核心网桥可以通过可选过滤器表达式定义,只有匹配的消息才会桥接。以下是来自示例配置文件的代码片段,其中 messaging-activemq 子系统包含具有过滤器的网桥。

    <subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">
      ...
      <bridge
        name="myBridge"
        filter="FILTER_EXPRESSION"
        ...
      />
      ...
    </subsystem>
    Copy to Clipboard Toggle word wrap
  • 可以通过可选的过滤器表达式来定义转换,只有匹配的消息才会被移出。如需更多信息,请参阅 Diverts。以下示例片段显示了使用过滤器的 Divert:

    <subsystem xmlns="urn:jboss:domain:messaging-activemq:4.0">
      ...
      <divert
        name="myDivert"
        filter="FILTER_EXPRESSION"
        ...
      />
      ...
    </subsystem>
    Copy to Clipboard Toggle word wrap

Jakarta 消息传递选择器表达式和 JBoss EAP 消息传递核心过滤器表达式之间存在一些区别。Jakarta 消息传递选择器表达式在 Jakarta 消息传递消息上运行,而 JBoss EAP 消息传递核心过滤器表达式则在核心消息上运行。

在核心过滤器表达式中可以使用以下标识符来指代核心消息的属性:

  • AMQPriority.来引用消息的优先级。消息优先级是具有来自 0 到 9 的有效值的整数。0 是最低优先级,9 是最高优先级。例如,A MQPriority = 3 AND isolated = 'aardvark'。
  • AMQ 扩展.参考邮件的过期时间:该值是一个长整数。
  • AMQDurable。参考消息是否持久。该值是一个具有有效值的字符串:DUR ABLENON_DURABLE
  • AMQTimestamp.创建消息时的时间戳。该值是一个长整数。
  • AMQSize :消息的大小,以字节为单位。该值是一个整数。

核心过滤器表达式中使用的任何其他标识符将被假定为消息的属性。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat