Java Apache Camel中的OnCompletion()被多次调用

Java Apache Camel中的OnCompletion()被多次调用,java,apache-camel,Java,Apache Camel,在routeBuilder类中,它有许多路由,所有路由完成后都需要调用testMethod(),但当前testMethod()方法调用了很多次 .onCompletion().bean(TestProcessor.class,"testMethod").end() //路由器类 from(Source).setHeader("message", body()).onCompletion().bean(TestProcessor.class,"testMethod").e

在routeBuilder类中,它有许多路由,所有路由完成后都需要调用testMethod(),但当前testMethod()方法调用了很多次

 .onCompletion().bean(TestProcessor.class,"testMethod").end()
//路由器类

     from(Source).setHeader("message", 

    body()).onCompletion().bean(TestProcessor.class,"testMethod").end().
    choice().when(header("camelfilenameonly").contains("test1.csv"))
   .unmarshal().bindy(BindyType.Csv,Test1CsvDto.class).bean(TestProcessor.class,
                        "processTest1Object").stop()

                .otherwise().choice()
                .when(header("camelfilenameonly").contains("test2.csv"))
                //Unmarshal csv
                .unmarshal().bindy(BindyType.Csv, Test2CsvDto.class).bean(TestProcessor.class,
                        "processTest2").stop()

如果您有任何帮助,我们将不胜感激。

您能否将完整的路线定义路线定义代码更改添加到上面……我在本地测试了路线,一切正常。onCompletion方法在每次路由执行时调用一次。(旁注:我删除了bindy部分以简化它)在我的例子中,在上面的代码片段中,testMethod()调用了两次,即使它是单路由。我只是用bindy部分重新创建了完整路由,一切都按预期进行。查看我的代码:你能把上面添加的完整路由定义路由定义代码更改…我在本地测试了路由,一切正常。onCompletion方法在每次路由执行时调用一次。(旁注:我删除了bindy部分以简化它)在我的例子中,在上面的代码片段中,testMethod()调用了两次,即使它是单路由。我只是用bindy部分重新创建了完整路由,一切都按预期进行。请参阅我的代码: