문제

스프링 통합과 amqp(rabbitmq)를 사용하여 스프링 배치에서 원격 청킹을 구현하려고 합니다.

아래의 원격 청킹 테스트에서 ChunkMessageChannelItemWriter가 응답을 수집하는 방법을 이해할 수 없습니다.

https://github.com/spring-projects/spring-batch/blob/master/spring-batch-integration/src/test/resources/org/springframework/batch/integration/chunk/RemoteChunkStepIntegrationTests-context.xml

어떻게 작동하나요?하나의 메시지를 보내고, 응답을 기다리고, 응답을 받고, 다시 두 번째 메시지를 보내고, 두 번째 메시지 응답을 기다리고, 두 번째 메시지 응답을 받는 식인가요?

아니면 모든 메시지를 비동기적으로 보내고 응답을 기다린 다음 응답 채널에 도착하면 응답을 받습니까?

여기에서 원격 청킹 문서를 참조하면

http://docs.spring.io/spring-batch/reference/html/springBatchIntegration.html#asynchronous-processors

인바운드 및 아웃바운드 어댑터를 사용합니다.ChunkMessageChannelItemWriter가 응답을 받으면 어댑터가 필요한 이유는 무엇입니까?슬레이브 측에서 어댑터와 서비스 활성화기가 모두 사용되는 이유는 무엇입니까?

문서에서 이해하기 어렵기 때문에 누구든지 그것이 어떻게 작동하는지 이해하도록 도와줄 수 있습니까?

도움이 되었습니까?

해결책

이는 단지 테스트 사례일 뿐입니다. 모든 것이 로컬에서 실행됩니다. JMS 테스트 케이스 좀 더 실제적인 예를 들어보겠습니다.채널 항목 작성자는 아웃바운드 채널 어댑터를 사용하여 모든 청크를 JMS로 보냅니다.

원격 측(jms 리스너 컨테이너)은 청크를 수신하고 이를 처리한 후 응답을 replies 대기줄.

청크를 쓰기 위해 작성자가 호출될 때마다 응답을 확인하고 필요한 경우 제한이 초과되면 일시 중지됩니다.

모든 청크가 기록되면 afterStep(), 나머지 결과를 기다립니다.

청크 핸들러가 응답을 대기열 채널에 쓰기 때문에 이 모든 것은 로컬 테스트 사례와 동일하게 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top