Appendix D. Message Selectors

Message selectors allow a JMS consumer to be more selective about the messages it receives from a particular topic or queue. Message selectors use Message properties and headers as criteria in conditional expressions. These conditional expressions use boolean logic to declare which messages should be delivered to a client.

The message selectors are based on a subset of the SQL-92 conditional expression syntax that is used in the WHERE clauses of SQL statements. This section is a detailed exploration of the message selector syntax.

To illustrate how message selectors are applied, we will consider a hypothetical message that contains three application properties: Age, Weight, and LName. Age is an int, Weight is a double, and LName is a String property. The values of these properties depend on the message. The message selector is used to obtain only those messages with property values of interest to the consumer.

Identifiers

An identifier is the part of the expression that is being compared. For example, the identifiers in the following expression are Age, Weight, and LName:

            Age < 30 AND Weight >= 100.00 AND LName = 'Smith'

Identifiers can be any application-defined, JMS-defined, or provider-specific property, or one of several JMS headers. Identifiers must match the property or JMS header name exactly; identifiers are case sensitive. Identifiers have the same naming restrictions as property names (see Appendix C).

The JMS headers that can be used as identifiers ...

Get Java Message Service now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.