버스 대상의 엄격한 메시지 순서
메시지 순서가 모든 상황에서 유지보수되어야 하는 경우, 메시지의 순서가 일반 대상보다 훨씬 엄격하게 보존되도록 대상을 구성할 수 있습니다.
일반적으로 단일 생성자가 단일 대상으로 작성하는 메시지는 메시지가 작성되는 것과 같은 순서로 이용자에 의해 해당 대상에 표시됩니다. 그러나 메시지의 순서를 변경할 수 있는 특정 토폴로지 및 이벤트(예: 시스템 장애)가 있습니다(세부사항은 메시지 정렬 참조). 엄격한 메시지 순서가 필수인 경우, 매우 엄격한 방식으로 메시지 순서를 보존하도록 대상을 구성할 수 있습니다. 제한된 토폴로지와 함께 엄격한 메시지 순서 지정을 사용하여(이 절에서 나중에 설명됨) 모든 경우에 메시지 순서를 유지보수합니다.
자동으로 실행되는 제한사항
시스템에 엄격하게 순서 지정된 대상을 포함하는 경우, 런타임 시 특정 제한사항이
자동으로 실행됩니다. 해당 제한사항은 엄격한 메시지 순서를 준수하도록
애플리케이션이 대상과 상호 작용할 수 있는 방식에 영향을 주므로
대상이 완전히 순서 지정되도록 구성하기 전에 다음 각 제한사항을
제대로 이해해야 합니다.
- 동시 이용자가 순서 지정된 대상에 접속할 수 없습니다. 대상에서 이용 중인 둘 이상의 이용자가 있으면 이용 중인 메시지의 순서가 바뀔 수 있습니다. 따라서 정렬된 큐 대상 및 정렬된 토픽 영역에 있는 등록의 경우, 한 번에 최대 하나의 이용자가 접속할 수 있습니다. 이는 큐 대상에서 "수신 독점"을 true로, JMS 주제 연결 팩토리에서 "지속 가능한 등록 공유"를 "공유 불필요"로 설정하는 것과 동등하며, 해당 옵션이 겹치는 경우 경고가 시스템 로그에 생성되어 이를 표시합니다. 접속된 이용자는 한 번에 하나의 트랜잭션만을 수행하도록 제한됩니다(여러 메시징 인터페이스의 일반적인 작동 방식이므로 JMS와 같은 여러 사용자에 영향을 주어서는 안됨).
- 부분적으로 이용된 메시지는 후속 메시지가 이용되지 않도록 합니다. 표준 대상의 경우(즉, 엄격한 메시지 순서 지정 옵션을 사용하지 않은 대상), 대상에서 부분적으로 이용된 메시지(예: 아직 커미트되지 않은 트랜잭션에서 수신)는 이용자가 메시지 처리가 아직 커미트되지 않은 이전에 이용된 메시지 다음으로 계속 진행할 수 있도록 건너 뛸 수 있습니다. 이로써, 메시지 순서가 바뀔 수 있습니다. 정렬된 대상의 경우, 이용자가 해당 메시지를 건너 뛰지 않습니다. 대신, 이용자는 메시지가 완전히 제거되거나(예: 커미트되지 않은 트랜잭션이 커미트됨) 바뀔(예: 커미트되지 않은 트랜잭션이 롤백(roll back)) 때까지 차단됩니다. 이전에 접속된 이용자가 대상에서 메시지를 이용하는데 사용한 트랜잭션을 커미트하지 못한 경우 또는 트랜잭션 자원이 트랜잭션 커미트 중 임시로 사용 불가능하게 되는 경우 이 상황이 발생합니다. 자원이 영구적으로 사용 불가능한 경우, 해당 트랜잭션을 해석하는데 대한 정보는 인다우트 트랜잭션 해석을 참조하십시오.
- 동시 메시지 구동 Bean(MDB)은 정렬된 대상에 제한됩니다. 정렬된 대상에 배치된 모든 MDB의 최대 동시 엔드포인트 및 최대 일괄처리 크기 설정은 하나가 되도록 대체됩니다. 자세한 정보는 JMS 활성화 스펙 [Settings]의 내용을 참조하십시오. 이로써, MDB가 메시지의 정렬된 처리를 수행합니다. 시스템이 런타임 시 이 특성을 대체하는 경우, 경고가 시스템 로그에 생성됩니다.
- 동시 중개는 정렬된 대상에 제한됩니다. 정렬된 대상에 있는 모든 중개의 동시 중개 허용 설정은 false가 되도록 대체됩니다. 자세한 정보는 동시 중개의 내용을 참조하십시오. 이로써, 중개가 메시지의 정렬된 처리를 수행합니다. 시스템이 런타임 시 이 특성을 대체하는 경우, 경고가 시스템 로그에 생성됩니다.
- 메시지 실패가 반복되면 엔드포인트에서 자동으로 중지가 사용 가능한 경우 순차적으로 실패한 메시지 임계값이 1로 대체됩니다.
- 기존 주제 대상에서 엄격한 메시지 순서 유지보수를 사용할 수 있도록 합니다. 기존 주제 대상에 엄격한 메시지 정렬이 사용되는 경우, 메시지가 연관된 기존의 지속 가능 등록이 올바르지 않게 됩니다. 엄격한 메시지 정렬이 사용되고 환경이 다시 시작될 때 기존의 지속 가능 등록이 삭제되고 다시 작성됩니다. 지속 가능 등록과 연관된 메시지도 삭제됩니다.
메시지 순서 지정에 영향을 줄 수 있는 추가 제한사항
대상에 엄격한 메시지 순서 지정이 사용된 경우에도 다음 제한사항이
강제로 실행되지는 않지만 메시지 순서 지정에 영향을 줄 수 있으므로
인지하고 있어야 합니다.
- 대상에 예외 대상이 구성된 경우, 해당 대상을 대상으로 하는 메시지가 오류 조건(예: 실패한 최대 전달 수 제한에 도달한 메시지) 하에 예외 대상으로 전달될 수 있습니다. 이 메시지 경로 재지정은 메시지의 순서를 변경하는 것으로 간주될 수 있습니다. 그런 경우, 대상은 예외 대상을 "없음"으로 설정해야 합니다. 예외 대상을 없음으로 설정하면 그렇지 않은 경우 예외 대상으로 이동될 메시지가 대상에 남게 됩니다.
- 서비스 통합 버스의 토폴로지를 변경하면 메시지 순서에 영향을 줄 수 있습니다. 예를 들어, 정렬된 대상의 삭제 및 재작성은 두 개의 구분된 대상으로 표시되어 두 대상 간에 정렬이 혼합되지 않도록 해야 합니다.
- 중개 도입 또는 제거가 메시지 순서에 영향을 줄 수 있습니다. 메시지가 대상에 유입되는 동안 중개가 대상에 도입되거나 대상에서 제거된 경우 메시지 순서가 반드시 보존되지는 않습니다.
- 중개는 고의로 메시지 순서에 영향을 주도록 설계될 수 있으므로 중개를 변경하면 메시지 순서에 직접 영향을 줄 수 있습니다. 예를 들어, 메시지를 재정렬하거나 다른 대상에 메시지를 라우트하는 중개를 도입할 수 있습니다.
- 별명 대상과 외부 대상은 엄격한 메시지 순서를 유지보수할 옵션이 없습니다. 각 경우, 기반 대상만이 정렬될 수 있습니다.
- 큐 대상이 둘 이상의
메시징 엔진이 있는 클러스터 버스 멤버에 배치되면, 즉 대상에
둘 이상의 큐 위치 또는 중개 위치가 있는 경우 메시지 순서가 대상에서
유지보수 될 수 있습니다. 따라서 이와 같은 대상에서 엄격한 메시지 순서를 사용하면 메시지 순서가
보증되지 않습니다. 메시지 유사성을 구성하면 단일 이용자가 순서대로 처리하도록
메시지 세트를 동일한 큐 위치로 보낼 수 있습니다. 메시지가 더 이상 여러 큐 위치 간의
워크로드 균형을 맞추지 않으므로 메시지 유사성은 성능에 영향을 미칩니다.중요사항: 시스템은 사용자가 파티션 구분된 대상을 사용하도록 허용합니다. 사용자는 파티션 구분된 대상이 시스템에서 사용되지 않는지 확인해야 합니다.
- 보증된 지속성 이외의 임의의 신뢰도가 있는 메시지는 유실되거나 특정 조건 하에서 중복됩니다. 자세한 정보는 메시지 신뢰성 레벨 - JMS 전달 모드 및 서비스 통합 서비스 품질(QoS)의 내용을 참조하십시오. 메시지 유실 또는 중복으로 인해 메시지 순서가 바뀌는 것으로 간주되는 경우 엄격하게 정렬된 대상에서 보증된 지속성 메시지만을 사용해야 합니다.
- 메시지 순서 지정은 메시지 우선순위로 보증합니다. 다른 우선순위의 메시지가 낮은 우선순위의 메시지에 우선할 수 있음을 인지해야 합니다.
- 메시지 순서 지정은 메시지 신뢰도에서 보증됩니다. 한 신뢰도의 메시지가 다른 신뢰도의 메시지에 우선할 수 있음을 인지해야 합니다.
- 여러 이용자가 정렬된 대상에 접속할 수는 없지만 여러 생성자를 사용하여 메시지를 정렬된 대상에 보낼 수 있습니다. 메시지가 전송된 트랜잭션이 커미트된 순서로 대상에 표시될 때 다중 생성자에 걸친 순서 지정이 보증되지 않습니다.
- 애플리케이션 코드에 메시지 순서를 바꿀 수 있는 로직이 포함될 수 있습니다.