Cam을 사용하는 임 2.10.3.Camel Splitter가 NotifyBuilder에서 확인한 완료된 교환 수를 잘못 생성합니까?
from("direct:split")
.routeId("split-ti-analytics-events")
.split().method(JsonArraySplitter.class,"split")
.parallelProcessing()
.log("Received: ${body}")
.to("stub:direct:somewhere");
그리고 NotifyBuilder와 다음은 내 스플리터가 무엇을가한다고하고있다 주장하는 것을 수행하는 테스트 클래스 :
의 나는 다음과 같이 보입니다 경로를 가정 해 봅시다. 그 JSON 배열에서 7 개 개체 요소가 어디
[{},{},{},{},{},{},{}]
:
@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 배열입니다.테스트가 거의 즉시 실패합니다. 그러나 테스트 결과에는 "Received : {}"의 7 개 로그 메시지가 명확하게 표시됩니다.
이제 재미있는 부분이 있습니다 ... .whenExactlyDone (8)을 설정하면 NotifyBuilder에서 테스트가 통과합니다. 8 번째 메시지는 어디에서 오는가? 나는이 테스트가 유효하다는 것을 말하고 싶다. 적어도 json 배열로부터 분리 된 메시지를 받는다는 것을 알기 때문에 하루 만에 호출한다. (NotifyBuilder에서 내용을 검증하지 않는다는 사실을 무시한다.) 그러나 나는 실제로는 8 번째 교환기가 속하지 않은 경로를 통해 전송되는 것에 대해 우려했습니다. NotifyBuilder가 7 대신 해당 경로를 통해 수행되는 8 건의 교환을 보는 이유는 무엇입니까?
어떤 Camel 버전을 사용합니까? –
@ClausIbsen 2.10.3 – whaley