Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Current »

When we need to decouple our individual processing steps so that the message can be routed to different filtering processes based on some identifiable conditions, then we use a Message Router. It will consume the message from a message channel, review its set of conditional criteria and then pass the message to a specific message channel.

This interaction pattern differs from the Pipes and Filters pattern since it will connect to more than one outgoing message channel.

A key aspect of the Message Router, and another difference with Pipes and Filters, is that it will not modify the contents of the message. It is only concerned with the destination for the message and not any transformations.

Message Router using XML DSL:

We can determine how to route a request from an input (direct:a) endpoint to either direct:x, direct:y, or direct:z depending on the evaluation of various criteria:

<route>
    <from uri="direct:a"/>
    <choice>
        <when>
            <simple>${header.action} == 'add'</simple>
            <to uri="direct:x"/>
        </when>
        <when>
            <simple>${header.action} == 'upsert'</simple>
            <to uri="direct:y"/>
        </when>
        <otherwise>
            <to uri="direct:z"/>
        </otherwise>
    </choice>
</route>
  • No labels