ChunkMessageChannelItemWriter는 스프링 배치 원격 청킹에서 어떻게 응답을 수집합니까?
-
21-12-2019 - |
문제
스프링 통합과 amqp(rabbitmq)를 사용하여 스프링 배치에서 원격 청킹을 구현하려고 합니다.
아래의 원격 청킹 테스트에서 ChunkMessageChannelItemWriter가 응답을 수집하는 방법을 이해할 수 없습니다.
어떻게 작동하나요?하나의 메시지를 보내고, 응답을 기다리고, 응답을 받고, 다시 두 번째 메시지를 보내고, 두 번째 메시지 응답을 기다리고, 두 번째 메시지 응답을 받는 식인가요?
아니면 모든 메시지를 비동기적으로 보내고 응답을 기다린 다음 응답 채널에 도착하면 응답을 받습니까?
여기에서 원격 청킹 문서를 참조하면
인바운드 및 아웃바운드 어댑터를 사용합니다.ChunkMessageChannelItemWriter가 응답을 받으면 어댑터가 필요한 이유는 무엇입니까?슬레이브 측에서 어댑터와 서비스 활성화기가 모두 사용되는 이유는 무엇입니까?
문서에서 이해하기 어렵기 때문에 누구든지 그것이 어떻게 작동하는지 이해하도록 도와줄 수 있습니까?
해결책
이는 단지 테스트 사례일 뿐입니다. 모든 것이 로컬에서 실행됩니다. JMS 테스트 케이스 좀 더 실제적인 예를 들어보겠습니다.채널 항목 작성자는 아웃바운드 채널 어댑터를 사용하여 모든 청크를 JMS로 보냅니다.
원격 측(jms 리스너 컨테이너)은 청크를 수신하고 이를 처리한 후 응답을 replies
대기줄.
청크를 쓰기 위해 작성자가 호출될 때마다 응답을 확인하고 필요한 경우 제한이 초과되면 일시 중지됩니다.
모든 청크가 기록되면 afterStep()
, 나머지 결과를 기다립니다.
청크 핸들러가 응답을 대기열 채널에 쓰기 때문에 이 모든 것은 로컬 테스트 사례와 동일하게 작동합니다.