消息选择器使 JMS 使用者可以更有选择地从特定主题或队列接收消息。
消息选择器在条件表达式中使用消息属性和头作为条件。这些表达式使用布尔逻辑来声明应该将哪些消息传递给客户机,如 JMSInput 节点。
下表说明了消息选择器的构造。它包含一个标识,如 JMSPriority 头,或由应用程序控制的属性 myProperty1。选择器字符串必须指定一个跟有文字的运算符。
元素 | 有效值 |
标识 |
|
运算符 | AND、OR、LIKE、BETWEEN、=、<>、<、>、<=、>=、IS NULL 和 IS NOT NULL |
文字 |
|
JMSInput 节点提供自由格式字符串 PropertySelector 来指定过滤或包含应用程序属性的选择器。该节点所具有的属性还可以针对特定头属性,其中标识是隐含的,由节点生成。对于头选择器,必须指定字符串的运算符和文字部分。
如果指定了多个选择器,则节点生成组合选择器字符串,其中将单个选择器字符串以 AND 运算符连接在一起,且每个选择器字符串部分都以圆括号括起。
选择器属性 | 描述 |
属性选择器 | OrderValue > 100.00 此字符串按所显示的样子直接使用。 |
时间戳记 | BETWEEN 1057576423231 AND 10575788993265 只将在这两个 Java 时间(其中 Java 时间是自 1970 年 1 月 1 日以来的毫秒数)之间放入的消息传递到 JMSInput 节点。在此例中,所生成的字符串以标识 JMSTimestamp 为前缀。 |
传递方式 | PERSISTENT 这表示只有被发送方标记为 PERSISTENT 的消息应该传递到 JMSInput 节点。在此例中,所生成的字符串以标识 JMSDeliveryMode 为前缀。 |
优先级 | >= 5 AND <= 8 这表示只有被发送方标记为具有优先级 5、6、7 或 8 的消息应该传递到 JMSInput 节点。在此例中,所生成的字符串以标识 JMSPriority 为前缀。 |
消息标识 | > WMBRK123456 这将返回消息标识大于指定值的消息。在此例中,所生成的字符串以标识 JMSMessageID 为前缀。 |
重新传递 | FALSE 这表示节点应该接收未重新传递的消息。在此例中,所生成的字符串以标识 JMSRedlivered 为前缀。 |
相关标识 | = WMBRKABCDEFG 这将返回相关标识等于值 WMBRKBABCDEFG 的消息。在此例中,所生成的字符串以标识 JMSCorrelationID 为前缀。 |