문제

JMS 큐에서 소비되는 메시지 핸들러가 있으며 다른 JMS 큐에 결과를 보냅니다. 메시지 처리기는 Spring DefaultMesseAgelistenerContainer에 있습니다. 컨테이너가 종료되면 이미 소비 한 요청 처리를 완료하고 결과를 보내려고합니다. 동시에 요청 큐에서 새 메시지를 더 이상 소비하지 않아야합니다.

현재 특수 종료 조항이 없으면 Safe ApplicationContext.registershutdownhook ()가 보류중인 ListernerMethod 호출을 반환 할 때까지 대기하지만 응답 대기열로 결과를 보내지는 않습니다.

실행 핸들러가 생성 한 응답이 응답 대기열로 전송되도록하기위한 적절한 접근법은 무엇입니까?

도움이 되었습니까?

해결책

가는 길은 DisposableBean 인터페이스 또는 @PreDestroy 주석. IMHO의 핵심은 Spring이 DMLC를 종료하도록하는 것이 아니라 현재 "시스템 내부"메시지를 알고있는 구성 요소에 의해 수행하도록하는 것입니다. 이렇게하면 현재 진행된 메시지가 완료되기를 기다리는 동안 새 메시지 듣기를 중단합니다.

사용 depends-on Bean 선언에 대한 속성 종료 된 콩 순서를 정의 할 수도 있습니다. 이것에 대해 더 많이 봄 참조 문서.

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