A message filter, shown in Figure 50, is a processor that eliminates
undesired messages based on specific criteria. Filtering is
controlled by specifying a predicate in the filter: when the
predicate is true, the incoming message is allowed
to pass; otherwise, it is blocked. This pattern maps to the
corresponding message
filter pattern in Apache Camel.
Example 20 shows how to define a
message filter using the ServiceMix EIP component. Incoming
messages are passed through a filter mechanism that blocks
messages that lack a test:world element.
Example 20. ServiceMix EIP Message Filter
<eip:message-filter service="test:messageFilter" endpoint="endpoint">
<eip:target>
<eip:exchange-target service="test:trace3" />
</eip:target>
<eip:filter>
<eip:xpath-predicate xpath="count(/test:world) = 1" namespaceContext="#nsContext"/>
</eip:filter>
</eip:message-filter>Example 21 shows how to define an equivalent route using Apache Camel XML configuration.
Example 21. Apache Camel Message Filter Using XML
<route> <from uri="jbi:endpoint:http://progress.com/demos/test/messageFilter/endpoint"> <filter> <xpath>count(/test:world) = 1</xpath> <to uri="jbi:service:http://progress.com/demos/test/trace3"/> </filter> </route>
Example 22 shows how to define an equivalent route using the Apache Camel Java DSL.
Example 22. Apache Camel Message Filter Using Java DSL
from("jbi:endpoint:http://progress.com/demos/test/messageFilter/endpoint").
filter(xpath("count(/test:world) = 1")).
to("jbi:service:http://progress.com/demos/test/trace3");








