Routers

One of the flow requirements is to send the messages to one or more channels based on certain criteria. A router component can be used to distribute the messages to multiple destinations. For example, the requirement is that all new Trades should be sent to new-trades-in-channel while all amended Trades are sent to amended-trades-in-channel. The Router component will take care of this task. The router picks up the message from a channel and redelivers (routes) it to the relevant channel based on payload or headers content.

There is a difference between the filters and routers. While Filter decides whether or not the message is to be sent based on a simple Boolean test, Router forwards the message to one or more channels based on content. There are only two options for a message that’s being passed through a Filter—forwarded or discarded. If a filter is used, a message may or may not appear in an output channel, whereas if a router is used, a single message can be sent to one or more channels.

The framework provides a couple of built-in routers: PayloadTypeRouter, based on payload content, or HeaderValueRouter, based on header values.

PayloadTypeRouter

The PayloadTypeRouter determines the routing of messages to different channels based on the type of the payload. The router endpoint attached to an incoming channel will evaluate the type and accordingly distribute (route) the messages to other channels expecting that particular type. The payload-type-router element is used to ...

Get Just Spring Integration now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.