Apache Camel:保留过滤后的消息

时间:2014-04-23 06:56:29

标签: java routing apache-camel

假设我有一个包含消息AABABA的队列。我想记录+删除所有B条消息,但我希望保持所有A条消息不受影响。所以基本上我需要某种类型的忽略功能,而不是丢弃过滤器。

如果没有,我可能需要做类似的事情:

from("jms:queue:from")
    .filter(header("head").isEqualTo("B")).to("log:com.acme?level=INFO").end()
    .to("jms:queue:from");

这类事情似乎是一种相当普遍的模式?人们通常如何做这类事情?

1 个答案:

答案 0 :(得分:1)

我认为choice是比过滤器更好的选择

    from("jms:queue:from")
    .choice()
        .when(header("head").isEqualTo("B")).to("log:com.acme?level=INFO")
        .otherwise().to("jms:queue:from")
    .end()