java驼峰拆分器生成NotifyBuilder看到的已完成交换的数量不正确?
我正在使用Camel 2.10.3
让我们假设我有一条如下所示的路线:
from("direct:split")
.routeId("split-ti-analytics-events")
.split().method(JsonArraySplitter.class,"split")
.parallelProcessing()
.log("Received: ${body}")
.to("stub:direct:somewhere");
一个测试类使用NotifyBuilder来断言我的拆分器,它正在做它应该做的事情
@Test(description = "Asserts that when we receive a json event that we properly split the " +
"events if the payload was a json array.")
public void testReceiveTiAnalyticsArrayOfJsonEvents() {
NotifyBuilder notifier = new NotifyBuilder(context)
.wereSentTo("stub:direct:somewhere")
.whenExactlyDone(7)
.create();
producerTemplate.sendBody("direct:split", sampleEventsInArrayJsonString);
assertTrue(notifier.matches(5, TimeUnit.SECONDS));
}
并假设sampleEventsInArrayJsonString是一个json数组,如下所示:
[{},{},{},{},{},{},{}]
其中,json数组中有7个对象元素
测试很快就会失败。然而,测试的输出清楚地显示了7条日志消息“Received:{}”
现在,有趣的是。。。在NotifyBuilder中,如果我设置了。如果完成(8),则测试通过。第八条信息究竟从何而来?我很想说这个测试是有效的,我知道它至少会从json数组中分离出消息(忽略我没有在NotifyBuilder中验证内容的事实),所以今天就到此为止了,但我担心的是,实际上有第八次交换是通过不属于它的路由发送的。NotifyBuilder看到8次交换而不是7次交换的原因是什么
# 1 楼答案
是的,这是骆驼里的一只小虫子。我已经在测试中记录了一张罚单和一个工作补丁 https://issues.apache.org/jira/browse/CAMEL-6255