A message filter 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 FUSE Mediation Router.
The following example 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.
<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>The following example shows how to define an equivalent route using FUSE Mediation Router XML configuration:
<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>
The following example shows how to define an equivalent route using the FUSE Mediation Router 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");