Mule Filters Wrappers and Routers
Mule includes a variety of message processors designed to facilitate message routing or filtering, and message processor wrapping.
Mule filters evaluate a message to determine whether it can proceed through a flow. The simplest filters implement basic logic operators (such as
not), but these simple elements can be combined in various ways to specify complex logical conditions. For example, you can use a filter at the beginning of your flow to reject any requests from a particular range of IP addresses, or simply use a filter to reject any messages with a particular payload, or with a null payload.
Mule wrappers – or scopes, as they’re known within Mule Studio – work to encapsulate other message processors so that they function as a single unit. You might wrap several message processors together to form a transactional unit, so that they succeed or fail to process a message together, thus ensuring accurate updating of a database, for example. You might wrap several message processors together within a cache scope to store the result of their processing for reuse, or wrap a single message processor within a message enricher scope to add to a message payload without manipulating the original contents.
Mule routers – or flow controls, as they’re known in Mule Studio – function much as their name implies: to direct or otherwise control messages within a flow.
At times, flow controls act as splitters, resequencers, or aggregators, splitting messages into individual items for processing, resequencing message content, or aggregating split messages.
At times, they act as forks in the road, evaluating a message’s payload or header, then routing to the message down a particular "pathway" according to those contents. Thus, flow controls facilitate content-based routing. For example, you can use a choice flow control to examine part of a message payload, then route the message to the first "pathway" for which the set condition evaluates to true, such as where an order exceeds $5,000.
1 2 3 4 5 6 7 8 9 10 11 12 <mule xmlns="http://www.mulesoft.org/schema/mule/core" xmlns:http="http://www.mulesoft.org/schema/mule/http" xmlns:doc="http://www.mulesoft.org/schema/mule/documentation" xmlns:spring="http://www.springframework.org/schema/beans" xmlns:core="http://www.mulesoft.org/schema/mule/core" version="EE-3.4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mulesoft.org/schema/mule/http http://www.mulesoft.org/schema/mule/http/current/mule-http.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-current.xsd http://www.mulesoft.org/schema/mule/core http://www.mulesoft.org/schema/mule/core/current/mule.xsd"> <flow name="EchoFlow" doc:name="EchoFlow"> <http:inbound-endpoint exchange-pattern="request-response" host="localhost" port="8084" doc:name="HTTP" doc:description="Process HTTP requests or responses."/> <expression-filter expression="#[groovy:payload.getClass().getName() != 'org.mule.transport.NullPayload']" doc:name="Expression"/> <logger message="About to echo #[message.payload]" level="INFO" doc:name="Logger"/> <echo-component doc:name="Echo"/> </flow> </mule>
|Message Enricher and Cache|