Camel:是否有可能在java DSL中启动一个块?

时间:2014-05-20 07:45:24

标签: apache-camel

通过谷歌搜索和搜索Camel文档,我还没有找到一种方法在Java DSL中的Camel多播语句中启动一个块。

例如,我想象的是这样的:

from("direct:dummy")
    .multicast()
        .begin().setHeader("A","toto").process(doSomething).end()
        .begin().setHeader("A","titi").process(doSomethingElse).end()
;

假设的“begin()”将开始一个块。有这样的结构吗?有没有其他方法可以做这样的事情?

我现在使用的替代方法是在每个块中定义一个“直接”,但在某些情况下(特别是设置一个标头),这会使代码更难阅读。

在我的例子中,替代方案如下:

from("direct:dummy")
    .multicast()
        .to("direct:dummy.toto")
        .to("direct:dummy.titi")
;

from("direct:dummy.toto")
    .setHeader("A","toto")
    .process(doSomething)
;

from("direct:dummy:titi")
    .setHeader("A","titi")
    .process(doSomethingElse)
;

1 个答案:

答案 0 :(得分:3)

使用.pipeline()而不是.begin()作为块