嘲笑骆驼批量消费者

时间:2015-09-04 15:12:02

标签: unit-testing apache-camel

我正在编写单元测试来测试我在Spring DSL中定义的路由实际上是按照我期望的方式进行的

我目前正在尝试测试的路径从目录中读取文件并聚合它们。

我让聚合器知道何时通过使用DSL中Aggregator元素的completionFromBatchConsumer="true"属性来完成其工作。当我实际从文件系统中检索文件时,这很好用。

在我的单元测试中,我想在不进入文件系统的情况下触发路由,因此我一直在尝试replaceFromWith("direct:start");并将其设置为默认模板端点Uri。这在某种程度上起作用,但我从未看到我的聚合器被调用 - 我假设这是因为from端点从未通知批处理已完成。

如何让聚合器识别出有工作要做。

1 个答案:

答案 0 :(得分:1)

当您向直接终端发送批量大小时,您需要在交换机上发送属性。

您需要将http://camel.apache.org/maven/current/camel-core/apidocs/org/apache/camel/Exchange.html#BATCH_SIZE设置为1。

聚合器中的逻辑位于:org.apache.camel.processor.aggregate.AggregateProcessor#isCompleted