내 previous message에서 나는 들어오는 메시지를 병렬로 처리 할 솔루션을 찾고있었습니다. 많은 시행 착오 끝에, 나는 해결책이 될지도 모른다고 생각한다.브로커에서 프로세서의 메시지 손실 다시 시작
그러나 작업중인 플랫폼의 요구 사항 중 하나는 갑작스러운 브로커가 다시 시작될 경우 처리되는 메시지를 "다시 시작"하거나 "다시 대기"해야한다는 것입니다.
테스트하는 동안 메시지 당 작업 단위를 수행하기 위해 한 번에 여러 프로세서를 성공적으로 시작했습니다. 갑자기 브로커를 재시작 할 때 발견 한 사실은 프로세서 내부에서 작동하는 메시지가 실제로 손실된다는 것입니다. 그러나 프로세서가 의도적 인 예외를 throw하면 메시지가 큐에 다시 전달됩니다.
내 메시지가 처리되는 동안 (그리고 작업 단위가 완료되지 않은 경우) 내 메시지를 어떻게 보호 할 수 있습니까? 조언을 주시면 감사하겠습니다.
참고 : 마지막 구현은 tcp로드 밸런서 뒤에있는 두 개의 동일한 브로커의 마스터 - 마스터 설정을 사용합니다.
거래를 사용하고 있으며 문제가되는 메시지가 영구적입니까? –
메시지는 DeliveryMode.PERSISTENT가있는 대기열에 게시됩니다. 내 프로세서에 트랜잭션을 추가하는 방법을 모르겠습니다. 현재 activemq에 대한 Java 프로세스를 종료하면 모든 "in-flight"메시지가 사라집니다. – djBo
방금 각 경로에 트랜잭션을 추가했지만 메시지가 더 이상 병렬로 처리되지 않습니다 ... – djBo