집계 fan-out 플로우 작성

집계 fan-out 플로우는 초기 입력 메시지를 수신하여 이 메시지를 다수의 대상 응용프로그램에 대한 다수의 요청을 표시하도록 재구성합니다.

시작하기 전에

이 작업을 완료하려면 먼저 다음 작업을 완료해야 합니다.

이 작업을 완료하기 전에 메시지 플로우 집계에 대한 개요도 읽도록 하십시오.

동일한 메시지 플로우에서 fan-out 및 fan-in 플로우를 포함할 수 있습니다. 그러나, 두 개의 개별 플로우를 작성하도록 권장합니다. 분리된 메시지 플로우를 구성하는 이점에 대한 자세한 정보는 fan-out 및 fan-in 집계 플로우 연관을 참조하십시오.

fan-out 플로우의 예를 검토하려면 WebSphere Message Broker와 함께 제공하는 Airline Reservations 샘플을 참조하십시오.

fan-out 플로우를 작성하려면 다음을 수행하십시오.

  1. 브로커 응용프로그램 개발 perspective로 전환하십시오.
  2. fan-out 처리를 제공하여 새 메시지 플로우를 작성하십시오.
  3. 편집기 보기에 다음 노드를 추가한 후 설명된 대로 노드를 구성하고 연결하십시오.
    입력 노드
    입력 노드는 여러 개의 요청 메시지가 생성되는 입력 메시지를 수신합니다. 이는 내장 노드 또는 사용자 정의 입력 노드 중 하나일 수 있습니다.
    1. 입력 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 누르십시오.
    2. 이 노드에 대한 입력 메시지의 소스를 지정하십시오. 예를 들면, 기본 등록 정보인 WebSphere MQ 큐 이름에 MQInput 노드가 메시지를 검색하는 큐 이름을 지정하십시오.
    3. 선택사항: 이 노드에 대해 구성할 기타 등록 정보의 값을 지정하십시오. 고급 등록 정보 트랜잭션 모드를 디폴트인 예로 설정하여 집계 요청 메시지를 동기점 아래에 넣을 것을 권장합니다. 이렇게 하면 집계 인스턴스에 이를 알리는 제어 메시지를 수신하기 전에 AggregateReply 노드가 응답 메시지를 수신하는 상황을 피할 수 있습니다. fan-out 플로우를 트랜잭션 제어 하에 넣으면 응답 메시지가 AggregateReply에 전달되기 전에 fan-out 플로우가 완료됩니다.
    4. AggregateControl 노드의 in 터미널에 입력 노드의 out 터미널을 연결하십시오.

      이는 가장 단순한 구성을 나타냅니다. 적용 가능한 경우, 입력 노드와 AggregateControl 노드 간에 기타 노드를 포함시킬 수 있습니다. 예를 들면, 감사 목적으로 요청을 저장하거나(Warehouse 노드에) 메시지에 고유 ID를 추가하고자 할 수 있습니다(Compute 노드에).

    5. 선택사항: fan-out 및 fan-in 플로우가 한 메시지 플로우에 결합된 경우, 고급 탭에서 순서 모드 등록 정보를 수정하도록 권장합니다. 큐 순서별 옵션을 선택하고 논리 순서 옵션도 선택하도록 하십시오. 이로써, 큐에 수신된 메시지의 논리 순서를 유지보수하도록 입력 노드가 단일 스레드가 되도록 강제 실행합니다. 따라서, 사용 가능하게 한 모든 추가 인스턴스 스레드가 fan-in 입력 노드에서만 공유되어 집계 성능이 개선됩니다. fan-in 및 fan-out 플로우가 별도의 메시지 플로우에 있는 경우 fan-in 플로우에 특정하게 추가 스레드가 사용 가능하도록 할 수 있으므로 이 단계는 필수가 아닙니다.
    AggregateControl 노드
    AggregateControl 노드는 AggregateRequest 노드에 필요한 정보로 입력 메시지와 연관된 로컬 환경을 갱신합니다.
    1. AggregateControl 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 누르십시오.
    2. AggregateControl 노드의 집계 이름 등록 정보를 이 특정 집계를 식별하도록 설정하십시오. 차후 AggregateReply 노드와 AggregateControl 노드를 연관시키는 데 사용됩니다. 지정한 집계 이름은 브로커 내에서 문맥상 고유해야 합니다.
    3. 선택사항: 시간 종료 등록 정보를 설정하여 일정한 조치를 취하기 전에 응답이 도착할 때까지 브로커가 대기할 시간을 지정하십시오(집계에 대한 시간 종료 설정에서 설명함).

      AggregateControl 노드에 시간 종료가 설정되어 있지 않으면 내부적으로 저장된 집계 요청은 모든 집계 응답 메시지가 리턴될 때까지 제거되지 않습니다. 이로 인해 내부 큐에 점차 메시지가 누적될 수 있습니다. 이 상황이 발생하지 않게 하려면 시간 종료를 0이 아닌 값으로 설정하여(0은 시간 종료되지 않음을 의미함) 시간 종료에 도달하면 요청이 제거되어 큐가 중복 요청으로 가득 차지 않도록 하십시오. 시간 종료가 필요하지 않거나 예상되지 않더라도, 큐가 가끔 오래된 집계를 지우도록 시간 종료 값을 높은 값으로(예: 864000초, 즉 24시간) 설정하는 것이 유익합니다.

    4. AggregateControl 노드의 out 터미널을 이 터미널로 전달된 입력 메시지 내의 요청에 대한 분석 및 명세를 제공하는 하나 이상의 Compute 노드의 in 터미널에 연결하십시오.
    주: AggregateReply 노드의 Control 터미널은 버전 6.0에서 폐기되었으므로, 디폴트로 이 터미널에서 AggregateReply 노드까지의 연결(직접 또는 간접으로)은 무시됩니다. 이는 집계 플로우의 효율성을 최대화하기 위한 것이며 집계 신뢰성에는 나쁜 영향을 주지 않습니다. 이는 최적의 구성입니다.

    그러나 AggregateControl 노드에서 AggregateReply 노드로 제어 메시지를 송신하려면 Control 터미널을 fan-in 플로우의 해당되는 AggregateReply 노드에 연결해야 합니다(fan-out 및 fan-in 집계 플로우 연관에 설명된 대로 직접 또는 간접적으로). AggregateReply 노드에 간접적으로 연결한 경우(예: MQOutput 노드를 통해), 적절한 헤더를 메시지에 추가하기 위해 Compute 노드를 포함시켜 메시지를 안전하게 전송할 수 있어야 합니다.

    또한 Control 터미널과 이 터미널이 인식할 연결에 대해 환경 변수 MQSI_AGGR_COMPAT_MODE가 사용 가능하도록 설정해야 합니다. 그러나 이 옵션을 선택하면 성능에 관련 사항과 메시지 집계 작동에 영향이 미칩니다. 이러한 관련 사항과 환경 변수에 대한 자세한 설명은 집계 플로우에서 제어 메시지 사용을 참조하십시오.

    Compute 노드
    Compute 노드는 입력 메시지에서 정보를 추출하여 새 출력 메시지를 구성합니다.

    부속작업 요청을 핸들링하는 대상 응용프로그램이 단일 입력 메시지로부터 필요한 정보를 추출할 수 있으면, 메시지를 분할하기 위해 Compute 노드를 포함시키지 않아도 됩니다. 전체 입력 메시지를 모든 대상 응용프로그램에 전달할 수 있습니다.

    대상 응용프로그램이 전체 입력 메시지가 아닌 개별 요청을 수신할 것으로 예상될 경우, 입력 메시지로부터 각 개별 부속작업 출력 메시지를 생성하려면 Compute 노드를 포함시켜야 합니다. 다음과 같이 입력 메시지의 적절한 서브세트를 각 출력 메시지로 복사하여 각 Compute 노드를 구성하십시오.

    1. Compute 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 누르십시오.
    2. 처리 모드 기본 등록 정보의 값을 선택하십시오. 이 저장소는 노드가 메시지 트리의 어느 섹션을 수정할지를 지정합니다.

      AggregateControl 노드는 메시지가 AggregateRequest 노드에 도달할 때 이 노드가 읽는 입력 메시지의 로컬 환경 트리에 요소를 삽입합니다. 로컬 환경이 입력 메시지에서 Compute 노드의 출력 메시지로 복사되는지 확인하십시오. 로컬 환경을 포함하는 값(모두, 로컬 환경, 로컬 환경 및 메시지 또는 예외 및 로컬 환경 중 하나)을 지정하지 않으면 자동으로 이러한 상황이 발생합니다.

      이 값 중 하나를 지정할 경우, 브로커는 로컬 환경에 쓰는 ESQL을 사용하여 Compute 노드를 사용자 정의하며 출력 메시지에 필요한 해당 트리 내의 모든 요소를 복사한다고 가정합니다.

      로컬 환경을 수정하려면, 다음 명령문을 추가하여 필수 집계 정보를 입력 메시지에서 출력 메시지로 복사하십시오.

      SET OutputLocalEnvironment.ComIbmAggregateControlNode = 
                  InputLocalEnvironment.ComIbmAggregateControlNode;
    3. 선택사항: 이 노드에 대해 구성할 기타 등록 정보의 값을 지정하십시오.
    4. 이 노드의 입력 메시지에서 작성된 출력 요청 메시지의 목적지를 표시하는 출력 노드의 in 터미널에 각 Compute 노드의 out 터미널을 연결하십시오.
    Output 노드
    fan-out 플로우에 생성한 각 출력 메시지에 대한 출력 노드를 포함시키십시오. 각 목적지를 적절히 수정하여 아래에 설명된 대로 각 노드를 구성하십시오.

    이 노드는 MQOutput 노드와 같은 요청/응답 모델을 지원하는 출력 노드이거나 노드 혼합이어야 합니다(대상 응용프로그램의 요구사항에 따라).

    1. 출력 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 누르십시오.
    2. 이 노드에 대한 출력 메시지의 목적지를 지정하십시오. 예를 들면, 기본 등록 정보인 WebSphere MQ 큐 이름에 MQOutput 노드가 메시지를 송신하는 큐 이름을 지정하십시오. 대상 응용프로그램은 해당 요청을 처리하여 응답을 입력 메시지에 지정된 응답 목적지 (예: WebSphere MQ ReplyToQueue)로 송신합니다.
    3. 응답을 fan-in 플로우의 입력 큐로 송신하도록 지정하려면 왼쪽 보기에서 요청을 누른 다음 이 등록 정보에 대한 값을 설정하십시오.
    4. 선택사항: 이 노드에 대해 구성할 기타 등록 정보의 값을 지정하십시오.
    5. 출력 노드의 out 터미널을 AggregateRequest 노드의 in 터미널에 연결하십시오. 메시지가 출력 노드의 out 터미널을 통해 전달되면, 내장 출력 노드는 연관된 로컬 환경 내의 WrittenDestination 폴더를 AggregateRequest 노드에 필요한 추가 정보로 갱신합니다.

      내장 노드에서 작성된 정보는 큐 이름, 큐 관리자 이름, 메시지 ID와 상관 ID(MQMD의) 및 응답 메시지 ID(메시지 ID와 동일한 값으로 설정된)입니다.

    AggregateRequest 노드
    fan-out 플로우에 생성되는 각 출력 메시지의 AggregateRequest 노드를 포함시키십시오.
    1. 출력 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 누르십시오.
    2. 폴더 이름을 송신된 요청 유형을 식별하는 값으로 기본 등록 정보를 설정하십시오. 이 값은 fan-in 플로우에서 수신될 때 응답 메시지와 일치하도록 AggregateReply 노드에서 사용됩니다. Fan-out 플로우가 생성하는 각 요청에 대해 지정하는 폴더 이름은 고유해야 합니다.

    AggregateRequest 노드는 처리하는 각 메시지에 대한 변경 시작WebSphere MQ변경 끝에 레코드를 씁니다. 이로써 AggregateReply 노드가 각 응답이 연관되어 있는 요청을 식별할 수 있습니다. 출력 노드가 트랜잭션 방식으로 처리되지 않을 경우, 이 데이터베이스 갱신이 확약되기 전에 응답 메시지가 fan-in 플로우에 도달합니다. 이러한 상황을 방지하기 위해 시간 종료를 사용하는 방법에 대해서는 집계에 대한 시간 종료 설정의 내용을 참조하십시오.

    경고:
    시간 종료를 사용하면 위에 설명된 상황을 방지하는 데 도움이 되지만, fan-out 플로우를 트랜잭션 방식으로 만들어서 해당되는 AggregateRequest 노드가 데이터베이스 갱신사항을 확약하기 전에 fan-in 플로우로 응답 메시지가 전달되지 않도록 하는 것이 바람직합니다.
  4. 메시지 플로우를 저장하고 해당 구성을 적용하려면 Ctrl-S를 누르십시오.
fan-out 플로우가 초기화한 집계 응답을 수집하려면 fan-in 플로우를 작성하십시오(집계 fan-in 플로우 작성 참조).
관련 개념
메시지 플로우 개요
로컬 환경 트리 구조
메시지 플로우 집계
사용자 정의 입력 노드
사용자 정의 출력 노드
관련 태스크
집계 플로우 구성
집계 fan-in 플로우 작성
집계 플로우에서 제어 메시지 사용
fan-out 및 fan-in 집계 플로우 연관
집계에 대한 시간 종료 설정
다중 AggregateControl 노드 사용
집계 플로우의 예외 핸들링
메시지 플로우 설계
메시지 플로우 작성
메시지 플로우 컨텐츠 정의
다중 출력 메시지 생성
사용자 정의 확장 구성요소 개발
관련 참조
AggregateControl 노드
AggregateReply 노드
AggregateRequest 노드
Compute 노드
MQeInput 노드
MQeOutput 노드
MQInput 노드
MQOutput 노드
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac12290_