메시지 플로우 처리량 최적화

설계한 각 메시지 플로우는 특정 소스에서 수신한 메시지에 대한 완전한 처리 세트를 제공해야 합니다. 그러나 이는 수많은 노드를 포함하는 매우 복잡한 메시지 플로우를 생성하여 성능 오버헤드 및 잠재적 병목 현상을 유발할 수 있습니다. 메시지를 처리하는 메시지의 플로우의 수가 증가하면 병렬 처리 기회가 제공되므로 처리량이 증가됩니다.

또한 메시지 플로우에서 취하는 조치를 확약하는 방법 및 메시지가 처리되는 순서를 고려할 수 있습니다.

최적 메시지 플로우 처리량에 대한 다음 옵션을 고려하십시오.

단일 메시지 플로우에서 다중 스레드 처리 메시지
메시지 플로우를 전개할 때 브로커는 그 안에 포함된 각 입력 노드의 메시지 플로우 인스턴스를 자동으로 시작합니다. 디폴트 작동입니다. 그러나 매우 많은 수의 메시지를 핸들링하는 메시지 플로우가 있는 경우, 입력 소스(예: WebSphere MQ 큐)에 교착 상태가 발생할 수 있습니다.

Bar 파일에서 전개된 메시지 플로우의 추가 인스턴스 등록 정보를 갱신할 수 있습니다. 메시지 처리 순서가 중요하지 않은 경우, 이 방법이 병목 현상을 핸들링하는 가장 효율적인 방법입니다.

메시지 플로우가 WebSphere MQ 큐에서 메시지를 수신하는 경우, MQInput 노드의 순서 모드 등록 정보를 설정하여 어느 정도까지 메시지 처리 순서를 지정할 수 있습니다.

  • 순서 모드사용자 ID별로 설정한 경우, 노드는 특정 사용자(MQMD 필드의 UserIdentifier 필드로 식별됨)로부터 받은 메시지가 보장된 순서로 처리되게 합니다. 한 사용자로부터 받은 이전 메시지를 현재 메시지 플로우의 다른 인스턴스가 처리 중인 경우, 해당 사용자로부터 받은 두 번째 메시지는 메시지 플로우 인스턴스에 의해 처리되지 않습니다.
  • 순서 모드큐 순서별로 설정한 경우, 큐에서 메시지를 읽는 순서를 보존하기 위해 노드는 한 번에 하나의 메시지를 처리합니다. 따라서, 이 노드는 메시지 플로우의 추가 인스턴스 등록 정보가 0으로 설정되어 있어도 작동합니다.

지원되는 모든 프로토콜을 통해 브로커와 통신하는 Publish/Subscribe 응용프로그램의 경우, 지정된 토픽의 메시지는 publisher에서 수신한 것(적용되는 경우, 메시지 우선순위를 기초로 재정렬)과 동일한 순서대로 브로커에서 publish됩니다. 이는 일반적으로 각 subscriber가 특정 토픽에 대해 특정 publisher로부터 publisher가 publish한 순서대로 특정 브로커로부터 메시지를 수신한다는 의미입니다.

그러나 간혹 메시지가 순서를 따르지 않고 전달될 수도 있습니다. 예를 들면, 네트워크의 링크가 실패하거나 후속 메시지가 다른 링크를 통해 라우트되는 경우에 발생할 수 있습니다.

메시지가 수신되는 순서를 확인해야 할 경우, publish된 각 메시지에 대해 Publish 명령의 SeqNum(순서 번호) 또는 PubTime(publish 시간 소인) 매개변수를 사용하여 publish 순서를 계산할 수 있습니다.

모든 MQI 및 AMI 사용자에게 권장되는 자세한 기술 정보는 MQI로 작성된 프로그램의 경우 WebSphere MQ Application Programming Guide를, AMI로 작성된 프로그램의 경우에는 WebSphere MQ Application Messaging Interface (WebSphere MQ SupportPacs 웹 페이지에서 SupportPac MA0F로 사용 가능)를 참조하십시오.

WebSphere MQ Everyplace 및 SCADA 응용프로그램은 각각 WebSphere MQ Mobile TransportWebSphere MQ Telemetry Transport에서 설명하는 것처럼 다른 방법으로 메시지 순서를 정렬합니다. 브로커는 WebSphere MQ Web Services Transport, WebSphere MQ Real-time Transport, 또는 WebSphere MQ Multicast Transport를 통해 수신된 메시지에 대한 메시지 정렬을 제공하지 않습니다.

브로커에서 메시지 플로우의 다중 복사
동일한 메시지 플로우의 여러 사본을 동일 브로커의 서로 다른 실행 그룹으로 전개할 수도 있습니다. 이는 단일 메시지 플로우의 메시지 처리 스레드의 수를 늘리는 것과 유사한 효과가 있지만 얻어지는 이점은 비교적 적습니다.

또한 이 옵션은 메시지가 처리되는 순서를 판별하는 기능을 제거합니다. 그 이유는 브로커에 둘 이상의 메시지 플로우 사본이 있는 경우, 동일 큐에서 각 사본이 메시지를 동시에 처리할 수 있기 때문입니다. 메시지를 처리하는 데 소요되는 시간은 차이가 있을 수 있으며 그에 따라 동일 큐에 액세스하는 다중 메시지 플로우는 임의 순서대로 입력 소스에서 메시지를 읽을 수 있습니다. 메시지 플로우로 형성된 메시지 순서는 원래 메시지의 순서와 일치하지 않을 수 있습니다.

이러한 메시지 플로우에서 메시지를 수신하는 응용프로그램이 메시지 순서를 벗어나는 것을 허용하는지 확인하십시오.

다중 브로커에서 메시지 플로우 복사
동일한 메시지 플로우의 여러 사본을 다른 브로커에 전개할 수 있습니다. 메시지 플로우에 메시지를 제공하는 응용프로그램이 메시지를 반드시 올바른 입력 큐 또는 포트에 넣을 수 있어야 하기 때문에 이 솔루션에서는 구성을 변경해야 합니다. 메시지 플로우의 구성 가능 등록 정보를 설정하여 메시지 플로우를 전개할 때 이러한 변경사항을 종종 작성할 수 있습니다.
메시지 플로우의 범위
일부 상황에서 단일 메시지 플로우를 여러 개의 다른 플로우로 분할하여 각 메시지 플로우가 수행하는 작업의 범위를 감소시킬 수 있음을 알 수 있습니다. 분할할 경우, 동일한 작업 단위에서 별도의 메시지 플로우를 실행할 수 없습니다. 메시지 플로우의 트랜잭션 측면(예: 다중 데이터베이스의 갱신)에서 이 옵션은 적당한 솔루션을 제공할 수 없다는 점을 알아야 합니다.

다음 두 예에서는 메시지 플로우를 분할하는 시기를 보여줍니다.

  1. RouteToLabel을 사용하는 메시지 플로우에서 입력 큐에 병목 현상이 있습니다. 두 번째 실행 그룹에서 다른 메시지 플로우 사본을 사용할 수 있으나 큐에 나타난 순서대로 모든 메시지를 핸들링하고자 하는 경우에는 적당하지 않습니다. 각 분기에 대한 입력 큐와 입력 노드를 제공함으로써 Label 노드에서 시작하는 메시지 플로우의 각 분기를 분할하는 것을 고려할 수 있습니다. RouteToLabel 노드가 메시지를 관련 Label 노드로 라우트할 경우, 메시지는 다른 모든 메시지에 독립적인 레벨을 갖기 때문에 이 방법이 적절할 수 있습니다.

    고유한 처리가 완료되었을 때 레이블 분기가 연결할 공용 처리를 완료하기 위해서는 다른 입력 큐 및 입력 노드도 제공해야 할 수 있습니다.

  2. 처리 시간이 오래 걸리는 대규모 메시지를 처리하는 메시지 플로우가 있는 경우, 다음을 수행할 수 있습니다.
    1. 다른 입력 큐를 사용하는 메시지 플로우의 다른 사본을 작성할 수 있습니다. (메시지 플로우 자체에서 이를 설정하거나 메시지 플로우를 전개할 때 이 등록 정보를 갱신할 수 있습니다.)
    2. 일부 응용프로그램에서 대체 큐 및 메시지 플로우로 메시지를 경로 재지정하도록 WebSphere MQ 큐 알리아스를 설정할 수 있습니다.

    원래 메시지 플로우의 기능을 복제하지만 입력 메시지 크기를 확인하고 대형 메시지를 다시 전달하도록 수정한) 원래 메시지 플로우에서 즉시 전달된 대형 메시지만 처리하는 새 메시지 플로우를 작성할 수도 있습니다.

확약 빈도
메시지 플로우가 WebSphere MQ 큐의 입력 메시지를 수신하는 경우, bar 파일에 메시지 플로우를 추가한 후 해당 디폴트 등록 정보를 수정하여 일부 메시지 플로우 시나리오에 해당하는 처리량을 개선할 수 있습니다. (다른 입력 노드에서 입력 메시지를 수신하는 경우 이러한 옵션을 사용할 수 없습니다. 각 메시지에 대한 메시지 플로우의 확약이 수행됩니다.)

다음의 등록 정보는 메시지 플로우가 트랜잭션을 확약하는 빈도를 제어합니다.

  • 확약 수 MQCMIT가 발행되기 전에 입력 큐에서 처리되는 메시지 수를 나타냅니다.
  • 확약 간격 MQCMIT가 호출되기 전에 경과되는 시간 간격을 나타냅니다.
관련 개념
메시지 플로우 개요
전개 개요
관련 태스크
메시지 플로우 응답 시간 최적화
메시지 플로우 작성
메시지 플로우 컨텐츠 정의
구성 가능 등록 정보 편집
관련 참조
내장 노드
구성 가능한 메시지 플로우 등록 정보
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac00350_