Message Filter

概要

MessageFilterは、特定の条件を満たすメッセージのみを処理するフィルタリングを行います。

Java言語における

if (条件) {
    条件を満たすメッセージに行う処理
}  
のようなイメージです。


Message Filter

基本

次のSprinf XMLでは、ヘッダtypeの値がAである場合、ログを出力します。

    <camelContext xmlns="http://camel.apache.org/schema/spring">
        <route>
            <from uri="direct:start"/>
            <log message="(1) type = ${header.type} ${body}" />
            <filter>
                <simple>${header.type} == 'A'</simple>
                <log message="(2) filtered ${body}" />
            </filter>
            <log message="(3) ${body} end." />
            <to uri="mock:result"/>
        </route>
    </camelContext>

以下のようにヘッダtypeDAおよび?であるメッセージを送信します。

    public void testHeaderType() throws Exception {  
        // 入力データ送信
        template.sendBodyAndHeader("direct:start", "No.1 data", "type", "D");
        template.sendBodyAndHeader("direct:start", "No.2 data", "type", "A");
        template.sendBodyAndHeader("direct:start", "No.3 data", "type", "?");
    }

このとき、Aのメッセージは<filter />の処理を実行し、その後の<log>を実行していることがわかります。

[main] (1) type = D No.1 data
[main] (3) No.1 data end.
[main] (1) type = A No.2 data
[main] (2) filtered No.2 data
[main] (3) No.2 data end.
[main] (1) type = ? No.3 data
[main] (3) No.3 data end.

関連項目