4

私の場合は次のようなものです。郵便番号に基づいてメッセージを 3 つの異なる店舗にルーティングする必要があります。

そのためには、メッセージ ヘッダーを調べて顧客の郵便番号を見つけ、次の計算を行う必要があります。

    if(zip < 5000)
    {
        store = "SJ";
    }
    else if(zip >= 6000)
    {
        store = "JY";
    }
    else
    {
        store = "FY";
    }

メッセージヘッダーを充実させるために使用する次のカスタムトランスフォーマーを使用して、なんとかそれを成し遂げました:

public class HeaderEnricher {
    public Message<?> transform(Message<?> message) 
    {
        int zip = message.getHeaders().get("Customer Zip", Integer.class);
        String store;

        if (zip < 5000) 
        {
            store = "SJ";
        } 
        else if (zip >= 6000) 
        {
            store = "JY";
        } 
        else 
        {
            store = "FY";
        }

        Message<?> messageOut = MessageBuilder
                .withPayload(message.getPayload())
                .copyHeadersIfAbsent(message.getHeaders())
                .setHeaderIfAbsent("store", store).build();

        return messageOut;
    }
}

私が言ったように、これは機能していますが、ヘッダーエンリッチャーを使用して同じことを行う方法を考えていました. 上記のトランスフォーマーコードでの私の意図であるため、統合グラフでヘッダーエンリッチャーとして説明したいので、私は尋ねています。

それは可能ですか?

4

1 に答える 1

8

あなたが正しいです!SpELを使用して Java コードなしで実行できます。

<int:header-enricher input-channel="inputChannel" output-channel="outputChannel">
    <int:header name="store"
                expression="headers['Customer Zip'] lt 5000 ? 'SJ' : headers['Customer Zip'] ge 6000 ? 'JY' : 'FY'"/>
</int:header-enricher>
于 2013-11-15T11:49:53.333 に答える