Search
Calendar
May 2025
S M T W T F S
« Apr    
 123
45678910
11121314151617
18192021222324
25262728293031
Archives

PostHeaderIcon Filter too large files in Mule ESB

Case

You use a filter connector in Mule ESB 2.2.1, to perform any operation (let’s say: to send them on JMS, but this does not matter). You would like to filter files owing to their size, ie stop the handling of files larger than 10,000,000 bytes for instance.

We assume the files you handle are text files (not binary).

Solution

In your Mule XML config file, add the following block, using a short Groovy script:

<message-properties-transformer name="add-properties">
     <add-message-property key="fileSizeOK"
             value="#1" />
 </message-properties-transformer>

In the tag <file:inbound-endpoint>, add the attribute: transformer-refs="add-properties"
Now, add a tag <message-property-filter pattern="fileSizeOK=true"/>. Your outbound should then be similar to:

			<outbound>
                <filtering-router>
                    <jms:outbound-endpoint queue="lalou.jonathan.jms.queue"
						connector-ref="jmsConnector"/>
                    <message-property-filter pattern="fileSizeOK=true"/>
                </filtering-router>
                <forwarding-catch-all-strategy>
                    <file:outbound-endpoint path="/my/folder/"
                        connector-ref="fileConnector" outputPattern="error/#[header:originalFilename].too_big.#[function:dateStamp:yyyyMMdd_HHmmss_SSSSS].KO" />
                </forwarding-catch-all-strategy>
			</outbound>

Many thanks to Vincent N. for his help.

Leave a Reply