IBM MQ 메시징 제공자 및 메시지 구동 Bean(MDB) 애플리케이션을 사용한 엄격한 메시지 순서 지정
메시지 순서는 일부 비동기 메시징 애플리케이션에서 중요합니다. 즉, 메시지 생성자가 메시지를 전송한 것과 동일한 순서로 메시지를 처리하는 것이 중요합니다. 사용 중인 애플리케이션에서 이러한 유형의 메시지 정렬이 중요한 경우 디자인에 이러한 사항을 고려해야 합니다.
예를 들어 좌석 예약을 처리하는 메시징 애플리케이션에는 생성자 컴포넌트와 이용자 컴포넌트가 있습니다. 고객이 좌석을 예약하는 경우 생성자 컴포넌트는 이용자 컴포넌트로 메시지를 전송합니다. 고객이 예약을 취소하면 생성자(다른 생성자일 수 있음)가 두 번째 메시지를 전송합니다. 일반적으로 이용자 컴포넌트는 두 번째 메시지(예약 취소)를 처리하기 전에 첫 번째 메시지(좌석 예약)를 처리해야 합니다.
일부 애플리케이션에서는 생성자가 다음 메시지를 전송하기 전에 각 메시지에 대한 응답을 기다리는 동기식(요청-응답) 패턴을 사용합니다. 이러한 유형의 애플리케이션에서 이용자는 메시지 수신 순서를 제어하고 해당 순서가 생성자가 메시지를 전송한 순서와 동일함을 보장할 수 있습니다. 다른 애플리케이션에서는 생성자가 응답을 기다리지 않고 메시지를 전송하는 비동기(실행 후 잊음) 패턴을 사용합니다. 이러한 유형의 애플리케이션에서도 일반적으로 순서는 유지됩니다. 즉, 이용자는 특히, 연속 메시지 전송 간격이 긴 경우 생성자가 메시지를 전송한 것과 동일한 순서대로 메시지를 수신할 것을 기대할 수 있습니다. 그러나 디자인에 이러한 순서를 바꿀 수 있는 요소를 고려해야 합니다.
애플리케이션에서 다른 우선순위를 사용하여 메시지를 전송하는 경우(우선순위가 높은 메시지가 우선순위가 낮은 메시지보다 먼저 전송) 또는 메시지 선택기를 지정하여 애플리케이션에서 첫 번째 이외의 메시지를 명시적으로 수신한 경우에는 메시지 순서가 바뀝니다. 또한 병렬 처리 및 오류 또는 예외 처리로 인해 메시지 순서가 바뀔 수도 있습니다.