6.4. Server-side Selectors

6.4.1. Select messages using a filter

MRG 3 supports selecting messages from a queue using a server-side selector. This allows you to specify a filter using a SQL-like syntax. This filter is applied to the headers and properties of messages on the server. Messages that match the filter are delivered to the client.
To use server-side selectors, specify a selector in the link portion of the connection URL.
The following example will cause the server to select and deliver messages that have green, red, or blue as the value of the color property:
queue_name;{link:{selector:"color in ('green', 'red', 'blue')"}}
The following examples demonstrate selectors to filter messages on various header properties:
queue_name;{link:{selector:"amqp.priority = 1"}}
queue_name;{link:{selector:"amqp.priority IS BETWEEN 3 AND 6"}}
queue_name;{link:{selector:"myflag AND amqp.redelivered"}}
queue_name;{link:{selector:"msg_title LIKE '%news%'"}
Python and temporary syntax

With Python, selectors can be used by temporary syntax. For example, the C++ address with selector:

queue_name;{link:{selector:"myproperty = 1"}}
in Python is temporarily used as:
queue_name;{link:{'x-subscribe': {'arguments': {'x-apache-selector': "myproperty = 1"}}}}
The Java and server-side selectors

The Qpid Java client does not currently support server-side selectors, only JMS selectors. JMS selectors function differently than server-side selectors. Consult the JMS specification for more detail on JMS slectors.