如何在Camel Java DSL中使用多个EIP时正确使用end()

时间:2017-04-04 09:58:33

标签: java apache-camel

我有3个问题:

  1. 是否应该在Java DSL中关闭模式,例如:splitter,multicast,aggregator,recipientList或pollEnrich?类似的东西:在调用模式后总是使用.end()? 这是一个“干净代码”相关的问题,是关于使用Camel Java DSL时的良好实践。
  2. 在示例1.为什么我们必须使用end()两次才能使splitter和aggregationStrategy正常工作?
  3. 样本2.是否正确使用endChoice()和end()(即按设计使用;考虑到良好实践并且在分割器中使用pollEnrich)?
  4. 示例1。

    .from(uri1)
        .process(processor0)
        .split(inputFiles, aggregationStrategy)
            .process(processor1)
            .pollEnrich().simple(fileUri)
            .toD(uri2)
            .end()
        .end()
        .processor(processor2)
        .toD(uri3)
    

    如果我们只考虑对processor1,aggregationStrategy和processor2的调用,则调用顺序为:

    • 处理器1
    • aggregationStrategy
    • 处理器1
    • aggregationStrategy
    • processor2

    预期的行为是什么。

    例如,如果删除一个或两个end(),则调用顺序如下:

    • 处理器1
    • processor2
    • aggregationStrategy
    • 处理器1
    • processor2
    • aggregationStrategy

    以上序列的电话是在Souciance Eqdam Rashti的 EDIT 中引入的。

    示例2。

    .from(uri1)
        .process(processor0)
        .split(inputFiles)
            .process(processor1)
            .choice()
                .when(predicate)
                    .pollEnrich.simple(fileUri)
                    .process(processor2)
                    .process(processor3)
                    .to(uri1)
                .endChoice()
            .end()
        .end()
        .processor(processor4)
    

    提前感谢您的回答。

0 个答案:

没有答案