2016-09-19 3 views
0

유닛 테스트시,이 채널로 전달되는 메시지의 양의 정확성을 확인하기 위해 대기열에있는 채널에 스프링 통합 기본 채널을 연결하려고합니다. 스프링 통합 브릿지 다이렉트 대 큐 채널

<int:filter input-channel="prevChannel" output-channel="myChannel"> 
<int:bridge input-channel="myChannel" output-channel="aggregateChannel"> 
// the reason I have above bridge is I want to check the amount of message after filter. 
// I cannot check prevChannel since it is before filtering, and I cannot check aggregateChannel 
// because it has other processing branch 

// in test xml I import above normal workflow xml and added below configuration to 
// redirect message from myChannel to checkMyChannel to checking. 


<int:bridge input-channel="myChannel" 
      output-channel="checkMyChannel"/> 

<int:channel id="checkMyChannel">  
    <int:queue/> 
</int:channel> 

나는 항상 내가 잘못했다가 STH 0

인가 반환 내 단위 테스트 하지만 checkMyChannel.getqueuesize()에 checkMyChannel를 autowire가?

답변

0

이 내가이 발행 - 구독 채널이 하나의 도움이

How to test Spring Integration 에게로 myChannel을 선언해야, 고정있어, 내 경우에 대한 이후 경쟁 조건이 있습니다. "여러 명의 구독자가있는 일반 채널은 라운드 로빈입니다 ..."

0

우리와 함께 테스트 케이스를 공유하지 않았습니다. 우리는 전체 그림을 가지고 있지 않습니다. 그리고 거기에 경쟁 조건이있는 것처럼 보입니다. 어떤 사람은 getqueuesize()이라는 주장을하기 전에 checkMyChannel에서 귀하의 모든 메시지를 조사합니다.

우리의 테스트에서 우리는 그러한 경우에 <poller>을 사용하지 않습니다. 수동으로 PollableChannel.receive(timeout)을 사용합니다.

+0

편집 됨. 감사합니다. – edi

+0

'gateway.publish()'이 무엇인지 모르므로 코드가 작동하지 않으며 왜 ''이 필요하다고 설명하지 않았기 때문에 –

+0

와우! 'aggregateChannel'도 있습니다. 따라서 동일한 'myChannel'에 대해 두 개의' '이 있으며 기본 라운드 로빈 밸런서가있는'DirectChannel '과 유사합니다. 이제 설정이 좀 더 복잡해졌습니다. 어느 도움을 원하십니까?하지만 협조하지 않는 사람을 돕는 것은 어렵습니다 ... –