2017-04-13 5 views
0

우리는 우리가 시나리오 (사용 IBM MQ 및 봄 통합) 이하로 처리하는 기능을 구현해야하는 상황이 : JMS 큐가 장중에 실패하면봄 통합 : IBM MQ 큐에 장애 복구에 스위치

  1. 을 응용 프로그램은 메시지 손실없이 다른 정의 된 대기열에 자동으로 연결해야합니다.

  2. 응용 프로그램이 실행 중일 때 큐 구성을 동적으로 변경하거나 보내지 않은 메시지를 다시 시작해야하는 경우에도이를 손실하지 않아야합니다.

스프링 통합을 처음 사용하기 때문에 이러한 시나리오를 처리하기위한 좋은 디자인을 구현하는 방법에 대해 자세히 알려주십시오.

답변

0

두 번째 대기열에 대해 하나 이상의 JMS 아웃 바운드 채널 어댑터를 선언하고 동일한 직접 채널에 대한 두 번째 구독자 (order=2 포함)로 지정해야합니다. 해당 채널은 load-balancer="none"으로 구성되어야합니다. 이렇게하면 첫 번째 처리기가 메시지 처리에 실패하면 두 번째 가입자에게 전달되는 식으로 처리됩니다.

+0

감사합니다.이 시나리오를 여러 대기열로 테스트하는 중입니다. 하지만 Spring이 두 번째 큐를 사용하기 위해 영구적으로 되돌릴 지 (첫 번째 큐에서 오류가 발생한 후) 또는 각 트랜잭션을 계속 검사하여 (첫 번째 큐가 백업 된 경우) 다시 되돌릴 지 여부를 알 수 있습니까? –

+0

예, 항상 첫 번째 가입자를 시도하고 실패 할 경우에만 두 번째로 이동합니다. –

+0

그래서 두 가입자를 순서대로 확인하는 동안 각 메시지마다 지연이 추가 될 것이라고 생각합니까? 내가 잘못 이해했다면 제게 정정 해주십시오. 그러나 우리의 어플리케이션에는 여러 대기열과 꽤 많은 트래픽이있어 성능이 매우 중요한 기준입니다. 구독자 목록의 유효성을 다시 검사해야하는시기를 구성하거나 작동하는 목록을 계속 사용하는 것이 더 좋습니다. –