Route messages to one or more destinations Transform messages to an alternative representation Perform message aggregation, decomposing messages into multiple messages and sending them to their destination, then recomposing the responses into one message to return to the user Interact with an external repository to augment a message or store it Invoke web services to retrieve data Respond to events or errors Provide content and topic-based message routing using the publish–subscribe pattern