집계 fan-in 플로우 작성

집계 fan-in 플로우는 fan-out 플로우에서 송신한 요청 메시지에 대한 응답을 수신하여 수신한 모든 응답을 포함하는 결합된 응답 메시지를 구성합니다.

시작하기 전에

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

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

fan-out 플로우가 트랜잭션 방식인지 여부에 따라, 트랜잭션 방식이 아니면 지정한 시간 종료 값에 따라 fan-in 플로우가 모든 응답을 수신하기 전에 결합된 응답 메시지를 생성할 수 있습니다. 이 주제에 대한 자세한 정보는 집계 fan-out 플로우 작성을 참조하십시오.

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

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

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

  1. 브로커 응용프로그램 개발 perspective로 전환하십시오.
  2. fan-in 처리를 제공하여 메시지 플로우를 작성하십시오.
  3. 편집기 보기에 다음 노드를 추가한 후 설명된 대로 노드를 구성하고 연결하십시오.
    입력 노드
    입력 노드는 fan-out 플로우에서 생성된 여러 개의 요청 메시지에 응답을 수신합니다.

    이 노드는 MQInput 노드와 같은 요청/응답 모델을 지원하는 입력 노드이거나 노드 혼합이어야 합니다(응답을 송신하는 응용프로그램의 요구사항에 따라). 각 입력 노드가 수신한 응답은 해당 요청과 동일한 프로토콜을 통해 송신되어야 합니다. (예를 들면, fan-out 플로우에 MQOutput 노드를 포함시킬 경우, 해당 요청에 대한 응답은 이 플로우의 MQInput 노드가 수신해야 합니다.)

    1. 입력 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 누르십시오.
    2. 이 노드에 대한 입력 메시지의 소스를 지정하십시오. 예를 들면, 기본 등록 정보인 WebSphere MQ 큐 이름에 MQInput 노드가 메시지를 검색하는 큐 이름을 지정하십시오.
    3. 선택사항: 이 노드에 대해 구성할 기타 등록 정보의 값을 지정하십시오.
    4. AggregateReply 노드의 in 터미널에 입력 노드의 out 터미널을 연결하십시오.

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

    주: 위에 설명된 대로 fan-in 플로우의 시작 부분에서 모든 집계 응답 메시지를 수신하는 하나의 입력 노드를 보유하도록 권장합니다. 다중 노드 대신 하나의 노드를 사용하면 메시지 플로우의 실행 및 집계를 언제나 완료하는 특정 응답 입력 노드 스레드가 없도록 합니다. 반면, 다른 노드는 응답 메시지를 집계 응답에 전송하여 결과적으로 시간 종료가 되도록 합니다. 하나의 단일 입력 노드를 사용하여 추가 인스턴스로 스케일될 수 있는 각 집계의 추가 순차 응답 처리를 작성하여 보다 나은 처리 능력을 제공합니다.
    AggregateReply 노드
    AggregateReply 노드는 해당 터미널에서 입력 노드로부터 인바운드 응답을 수신합니다. AggregateReply 노드에서 수신된 각 응답 메시지는 브로커 데이터베이스에 지속적으로 저장됩니다.

    집계 요청의 특정 그룹에 대한 모든 응답이 수집되면, AggregateReply 노드는 집계된 응답 메시지를 작성한 다음 out 터미널을 통해 이를 전달합니다.

    1. AggregateReply 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 누르십시오.
    2. 이 집계를 식별하려면 AggregateReply의 집계 이름 등록 정보를 설정하십시오. fan-out 플로우에서 해당 AggregateControl 노드의 집계 이름 등록 정보에 설정한 값과 동일한 값으로 설정하십시오.
    3. 선택사항: 인식할 수 없는 메시지를 unknown 터미널로 전달하기 전에 보유하려면 알 수 없는 메시지 시간 종료의 값을 설정하십시오. 별도의 fan-out 및 fan-in 플로우를 사용 중이면, 제어 메시지 도착 시 지연 시간이 있는 경우 이 값을 0이 아닌 수로 설정하고자 할 수 있습니다.
    4. 선택사항: 인식할 수 없는 메시지를 명확히 핸들링하려면 unknown 터미널을 다른 노드 또는 노드 순서에 연결하십시오. 이 터미널을 메시지 플로우의 다른 노드에 연결하지 않을 경우, 이 터미널을 통해 전달된 메시지는 제거됩니다.
    5. 선택사항: AggregateControl 노드의 집계에 대해 시간 종료 값을 지정한 경우, 모든 응답을 수신하기 전에 만기되는 시간 종료를 명확히 핸들링하려면 timeout 터미널을 다른 노드 또는 노드 순서에 연결하십시오. 타이머가 만기될 경우 부분적으로 완료된 집계 응답이 timeout 터미널로 송신됩니다. 이 터미널을 메시지 플로우의 다른 노드에 연결하지 않을 경우, 이 터미널을 통해 전달된 메시지는 제거됩니다.
    6. 선택사항: 이 노드에 대해 구성할 기타 등록 정보의 값을 지정하십시오.
    7. AggregateReply 노드의 out 터미널을 Compute 노드의 in 터미널에 연결하십시오.
    주: AggregateReply의 Control 터미널은 버전 6.0에서 폐기되었며, 디폴트로 이 터미널과의 모든 연결(직접 또는 간접으로)은 무시됩니다. 이는 집계 플로우의 효율성을 최대화하기 위한 것이며 집계 신뢰성에는 손상을 주지 않습니다. 이는 최적의 구성입니다.

    그러나 AggregateReply 노드가 fan-out 플로우에서 해당 AggregateControl 노드가 송신한 제어 메시지를 해당되는 Control 터미널에서 수신하도록 하려면 집계 fan-out 플로우 작성에 설명된 대로 필요한 연결을 수행해야 합니다. AggregateReply 노드에서 출력 노드로의 경로는 가능한 한 직접 경로가 되도록 하십시오. fan-in 플로우를 짧게 유지하면 집계 성능이 좋아집니다. 이 제어 메시지의 컨텐츠를 수정하지 마십시오.

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

    Compute 노드
    Compute 노드는 결합된 응답이 들어 있는 메시지를 수신합니다. 결합된 이 메시지가 출력에 올바른 형식으로 되어 있지 않을 수도 있으므로, 집계 응답 메시지에는 특별한 구조가 있고 일부 노드(예: MQOutput 노드)에서 필요로 하는 비트스트림으로 되돌릴 수 없습니다. Out 및 Timeout 터미널은 언제나 집계된 응답 메시지를 출력하므로 MQOutput 노드 전에 언제나 추가 처리를 수행해야 합니다. 따라서 Compute 노드를 포함하고 이 노그를 구성하여 올바른 출력 메시지를 작성해야 합니다.
    1. Compute 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 누르십시오.
    2. ESQL 모듈 기본 등록 정보에서 이 노드의 기능을 사용자 정의하는 ESQL 모듈의 이름을 지정하십시오.
    3. 노드를 마우스 오른쪽 단추로 누른 후 ESQL 열기를 눌러 이 노드에 대한 모듈을 포함하는 ESQL 파일을 여십시오. ESQL 편집기 보기에서 파일이 강조표시됩니다.
    4. 입력 메시지의 집계 응답으로부터 단일 출력 메시지를 작성하도록 ESQL을 코딩하십시오.

      out 터미널을 통해 전달되는 집계된 응답 메시지의 구조 및 해당 컨텐츠에 액세스하는 방법에 대한 정보는 결합된 메시지 컨텐츠 액세스에 나와 있습니다.

    5. 선택사항: 이 노드에 대해 구성할 기타 등록 정보의 값을 지정하십시오.
    6. Compute 노드의 Out 터미널을 단일 응답 메시지의 목적지를 표시하는 출력 노드의 In 터미널에 연결하십시오.
    Output 노드
    fan-in 플로우의 출력 노드를 포함시키십시오. 이 노드는 내장 노드 또는 사용자 정의 출력 노드가 될 수 있습니다.
    1. 출력 노드를 마우스 오른쪽 단추로 누른 후 등록 정보를 누르십시오.
    2. 이 노드에 대한 출력 메시지의 목적지를 지정하십시오. 예를 들면, 기본 등록 정보인 WebSphere MQ 큐 이름에 MQOutput 노드가 메시지를 송신하는 큐 이름을 지정하십시오.
    3. 선택사항: 이 노드에 대해 구성할 기타 등록 정보의 값을 지정하십시오.
  4. 메시지 플로우를 저장하고 해당 구성을 적용하려면 Ctrl-S를 누르십시오.

결합된 메시지 컨텐츠 액세스

AggregateReply 노드는 ComIbmAggregateReplyBody라는 Root 아래의 결합된 메시지 트리에 폴더를 작성합니다. 이 아래, AggregateRequest 노드에 설정한 폴더 이름을 사용하여 다수의 폴더를 작성합니다. 연관된 응답 메시지를 그 아래에 넣습니다.

예를 들면, 요청 메시지의 폴더 이름이 다음과 같을 수도 있습니다.

  • TAXI
  • HOTEL

AggregateReply 노드에서 작성한 결과 집계 응답 메시지의 구조는 다음과 유사합니다.

이는 루트 아래의 ComIbmAggregateReplyBody 요소 아래에 작성된 집계 메시지 컨텐츠에 대한 트리 다이어그램입니다. 해당 컨텐츠는 주위의 텍스트에 설명되어 있습니다.

다음 상관 이름을 사용하여 택시 회사의 응답에 액세스하는 데 Compute 노드를 사용할 수 있습니다.

InputRoot.ComIbmAggregateReplyBody.TAXI.xyz

폴더 이름은 고유하지 않아도 됩니다. 폴더 이름이 TAXI인 여러 요청이 있으면, 다음과 같이 배열 첨자 표기법을 사용하여 개별 응답에 액세스할 수 있습니다.

InputRoot.ComIbmAggregateReplyBody.TAXI[1].xyz
InputRoot.ComIbmAggregateReplyBody.TAXI[2].xyz
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac12300_