gpt4 book ai didi

java - Camel Splitter 产生 NotifyBuilder 看到的完成交换数量不正确?

转载 作者:太空宇宙 更新时间:2023-11-04 07:42:30 25 4
gpt4 key购买 nike

我使用的是 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 中,如果我设置 .whenExactlyDone(8),那么测试就会通过。第 8 条消息到底来自哪里?我想说这个测试是有效的,然后就到此为止了,因为我知道它至少从该 json 数组中分离出消息(忽略了我没有验证 NotifyBuilder 中的内容的事实),但我担心实际上有通过不属于的路由发送的第 8 个交换。 NotifyBuilder 看到通过该路由完成的 8 次交换而不是 7 次的原因是什么?

最佳答案

是的,这是 Camel 中的一个小错误。我已经记录了一张票,并在测试中进行了有效修复 https://issues.apache.org/jira/browse/CAMEL-6255

关于java - Camel Splitter 产生 NotifyBuilder 看到的完成交换数量不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15849116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com