Selective Consumer

Camel supports the Selective Consumer from the EIP patterns book.

The Selective Consumer from the EIP patterns can be implemented in two ways

image

Selective Consumer using Components

The first solution is to provide a Message Selector to the underlying URIs when creating your consumer. For example when using JMS you can specify a selector parameter so that the message broker will only deliver messages matching your criteria.

from("activemq:queue:hello?selector=color='red'")
  .to("bean:red");

Selective Consumer using Filter pattern

The other approach is to use a Message Filter which is applied; then if the filter matches the message your consumer is invoked as shown in the following example.

from("seda:a")
    .filter(header("foo").isEqualTo("bar"))
        .process(myProcessor);

And in XML

<route>
    <from uri="seda:a"/>
    <filter>
        <simple>${header.foo} == 'bar'</xpath>
        <process ref="myProcessor"/>
    </filter>
</route>