2016-08-25 1 views
1

activeMq 내장 브로커 큐에서 메시지 (원래 메시지)를 듣고 있습니다. 이 메시지는 먼저 채널로 이동 한 후 라우터로 전달되고 조건에 따라 aggregator로 전달됩니다 .Aggregator는 하나 이상의 메시지를 기다린 다음 부분 또는 집계 메시지를 서비스 활성화 자 클래스로 전달합니다.Spring 통합 애그리 게이터가 작동하지 않는 상태의 ActiveMQ

일부 논리 활성화 자 클래스에 따라 예외가 발생하기로 결정하고 ActiveMQ broker side redelivery plugin을 구성 할 때 메시지 재전송을 다시 예상합니다.

aggregator 메시지가 없으면 max retry가 도달해도 aggregator가 그림을 다시 전송하지 않으면 DLQ로 이동하고 DLQ로 이동합니다. 잘 모르겠지만 집계 된 메시지가 원본 메시지와 같지 않으며 이유 브로커가 메시지가 원래대로 집계 될 때 해당 메시지를 다시 대기열로 옮길 수 없다고 생각합니다.

이 시나리오를 처리하고 수집기에 전달 된 두 원본 메시지를 다시 전달할 수 있도록 다른 방법을 사용하면 브로커가 DQL로 이동할 때까지 다시 대기열에 다시 대기하도록 할 수 있습니다.

답변

0

질문이 분명하지 않습니다. 메시지가 집계 도구에 도달하면 집계 용도로 저장됩니다. JMS 전달 관점에서 성공합니다.

브로커 측면에서 이미 승인 된 JMS 메시지는 소급하여 "거부"할 수 없습니다.

요구 사항을 이해하는 경우 동시 처리> 1 (두 번째 메시지 처리 가능)의 리스너 컨테이너와 서비스 액티베이터 (애그리 게이터가 아님)가 호출하여 자신의 코드가 첫 번째 스레드까지 대기해야합니다. 두 번째 것은 도착한다. 조건이 발생하면 두 메시지를 모두 거부하십시오.

관련 문제