You are using a Message Router to route messages between multiple destinations.
How can you avoid the dependency of the router on all possible destinations while maintaining its efficiency?
Use a Dynamic Router, a Router that can self-configure based on special configuration messages from participating destinations.
Besides the usual input and output channels the Dynamic Router uses an additional control channel. During system start-up, each potential recipient sends a special message to the Dynamic Router on this control channel, announcing its presence and listing the conditions under which it can handle a message. The Dynamic Router stores the 'preferences' for each participant in a rule base. When a message arrives, the Dynamic Router evaluates all rules and routes the message to the recipient whose rules are fulfilled. This allows for efficient, predictive routing without the maintenance dependency of the Dynamic Router on each potential recipient.
... Read the entire pattern in the book Enterprise Integration Patterns
Related patterns:
Content-Based Router, Message Filter, Message Router, Publish-Subscribe Channel, Recipient List, Routing Slip