Coordinated Request Reply 샘플 정보

Coordinated Request Reply 샘플은 요청/응답 처리 패턴으로 WebSphere MQ 메시지를 사용하여 통신하는 최신 및 설정된 응용프로그램에 기초한 메시지 플로우 샘플 응용프로그램입니다. 최신 응용프로그램은 자체 정의 XML 메시지를 사용하며 요청 메시지를 발행합니다. 설정된 응용프로그램은 사용자 정의 Wire 형식(CWF) 메시지를 사용합니다. 이 응용프로그램은 요청 메시지를 수신하여 이를 처리하고 응답 메시지를 전달합니다. 응용프로그램이 성공적으로 통신하려면 요청 및 응답 메시지 둘 다에 대해 메시지 형식이 변환되어야 합니다.

이 샘플은 자체 정의 XML 메시지와 CWF 메시지 간에 변환을 수행할 수 있는 방법을 예시합니다. 또한 이 샘플은 하나의 메시지 플로우에 정보를 저장하고 다른 메시지 플로우에서 이를 검색할 수 있는 방법을 예시합니다. 이 샘플에서는 해당 응답 메시지가 검색될 때 사용하기 위해 초기 요청 메시지로부터 ReplyToQ 및 ReplyToQMgr을 보존할 필요가 있습니다. 이 시나리오에서는 세부사항을 저장하는 데 WebSphere MQ 메시지를 사용합니다.

이 샘플에서 처리는 세 개의 메시지 플로우와 하나의 메시지 세트로 구성됩니다. 메시지 플로우는 다음과 같습니다.

처리의 요청 섹션에서 메시지를 XML 형식에서 CWF로 변환하고 처리의 응답 섹션에서 CWF에서 XML로 변환할 때, 메시지 정의 SaleListMessage가 있는 메시지 세트 Sample MSET을 사용합니다.

메시지 플로우의 세부사항 및 이들 메시지 플로우가 수행하는 처리는 아래와 같이 설명됩니다.

Request 메시지 플로우

Request 메시지 플로우는 다음 처리를 수행합니다.

Request 메시지 플로우는 다음 노드로 구성됩니다.

Request 메시지 플로우

MQInput 노드 GetRequestMsg는 XML 메시지를 읽습니다. 수신되는 메시지가 자체 정의 XML 형식이므로 메시지 세트를 지정하거나 올바르게 구문 분석되도록 형식화할 필요가 없습니다.

StoreOriginalMQMD_Sub 서브플로우는 ReplyToQ 및 ReplyToQMgr 값의 저장영역을 WebSphere MQ 메시지에 캡슐화합니다.   이 캡슐화를 수행하는 이유는 두 가지 입니다.   첫째, 처리 논리를 다른 메시지 플로우에서 쉽게 재사용할 수 있게 하는 것이고, 둘째, 대체 구현이 대체될 수 있게 하기 위한 것입니다. 예를 들어, 데이터베이스 노드를 사용하는 대체 구현을 작성할 수 있습니다.

Compute 노드 TransformAndSetReplyTo는 다음 조치를 수행합니다.

  1. 입력 메시지에서 출력 메시지 트리로 메시지 헤더를 복사합니다.
  2. 입력 메시지를 XML 형식에서 CWF로 변환합니다.  
  3. 출력 메시지에 대한 메시지 세트, 유형 및 형식을 설정합니다.
  4. 새 메시지의 ReplyToQ를 응답 메시지 플로우의 입력 큐에 해당되도록 설정합니다.

MQOutput 노드 OutputRequestMsg는 WebSphere MQ 출력 메시지를 씁니다.

Backend Reply 메시지 플로우

Backend Reply 메시지 플로우는 다음 처리를 수행합니다.

  1. WebSphere MQ 메시지를 읽습니다.
  2. 메시지가 수정된 시간을 메시지의 페이로드에 추가합니다.
  3. WebSphere MQ 메시지를 씁니다.

Backend Reply 메시지 플로우는 다음 노드로 구성됩니다.

Backend Reply 메시지 플로우

MQInput 노드 GetRequestMsg는 CWF 메시지를 읽습니다. 수신되는 메시지를 구문 분석하는 데 필요한 메시지 세트 및 형식은 MQInput 노드에 지정되어 있습니다.

Compute 노드 Backend_Computation은 다음 조치를 수행합니다.

  1. 전체 입력 메시지를 출력 메시지 트리에 복사합니다.
  2. Message Broker에서 현재 시간을 확보하여 이를 재형식화합니다.
  3. 재형식화된 시간을 출력 메시지 트리에 추가합니다.

MQOutput 노드 PutReplyMsg는 WebSphere MQ 출력 메시지를 씁니다.

Reply 메시지 플로우

Reply 메시지 플로우는 다음 처리를 수행합니다.

  1. CWF 형식의 메시지를 포함하는 WebSphere MQ 메시지를 읽습니다.
  2. 메시지를 동등한 XML 형식으로 변환합니다.
  3. 해당 정보를 요청 메시지 플로우에 저장하는 데 사용된 WebSphere MQ 메시지를 읽고 원래 요청 메시지의 ReplyToQ 및 ReplyToQMgr를 확보합니다.   MQGet 노드를 사용하여 이를 수행합니다.
  4. 변환된 메시지와 검색된 ReplyToQ 및 ReplyToQMgr 값을 포함하는 WebSphere MQ 메시지를 작성합니다.

Reply 메시지 플로우는 다음 노드로 구성됩니다.

Reply 메시지 플로우

MQInput 노드 GetBackendReply는 CWF 메시지를 읽습니다. 수신되는 메시지를 구문 분석하는 데 필요한 메시지 세트 및 형식은 MQInput 노드에 지정되어 있습니다.

Compute 노드 MapToRequestor는 다음 조치를 수행합니다.

  1. 입력 메시지에서 출력 메시지 트리로 메시지 헤더를 복사합니다.
  2. 입력 메시지를 CWF 형식에서 XML로 변환합니다.

RestoreOriginalMQMD_Sub 서브플로우는 ReplyToQ 및 ReplyToQMgr 값의 검색을 캡슐화합니다. 원래 요청 메시지에 지정된 ReplyToQ 및 ReplyToQMgr의 값이 들어 있는 WebSphere MQ 메시지를 읽고 이를 응답 메시지에 복사합니다.   MQGet 노드를 사용하여 읽기를 수행합니다.   MQGet 노드는 CorrelId를 사용하여 해당 메시지를 선택하고 원래 요청 MQMD를 처리 중인 메시지의 MQMD로 복사하도록 구성되어 있습니다. 이는 설정된 응용프로그램에서 올바른 요청자 응용프로그램으로 응답 메시지를 전달합니다. MQGet 모드는 ReplyToQ 및 ReplyToQMgr의 원래 값을 저장하는 데 사용했던 WebSphere MQ 메시지의 페이로드(payload)도 검색합니다.

MQOutput 노드 PutOriginalReply는 WebSphere MQ 출력 메시지를 씁니다.

테스트 메시지

Coordinated Request Reply 샘플에 사용된 테스트 메시지는 고객의 송장 세부사항이 들어 있는 단순 XML 메시지입니다. 샘플을 실행하는 동안 이 XML 메시지는 CWF 형식으로 변환됩니다.   CompletionTime 필드 값은 샘플 실행 중 변경할 유일한 값입니다. 메시지는 다음과 같이 표시됩니다.

<SaleEnvelope>
<Header>
<SaleListCount>1</SaleListCount>
</Header>
<SaleList>
<Invoice>
<Initial>K</Initial>
<Initial>A</Initial>
<Surname>Braithwaite</Surname>
<Item>
<Code>00</Code>
<Code>01</Code>
<Code>02</Code>
<Description>Twister</Description>
<Category>Games</Category>
<Price>00.30</Price>
<Quantity>01</Quantity>
</Item>
<Item>
<Code>02</Code>
<Code>03</Code>
<Code>01</Code>
<Description>The Times Newspaper</Description>
<Category>Books and Media</Category>
<Price>00.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>00.50</Balance>
<Currency>Sterling</Currency>
</Invoice>
<Invoice>
<Initial>T</Initial>
<Initial>J</Initial>
<Surname>Dunnwin</Surname>
<Item>
<Code>04</Code>
<Code>05</Code>
<Code>01</Code>
<Description>The Origin of Species</Description>
<Category>Books and Media</Category>
<Price>22.34</Price>
<Quantity>02</Quantity>
</Item>
<Item>
<Code>06</Code>
<Code>07</Code>
<Code>01</Code>
<Description>Microscope</Description>
<Category>Miscellaneous</Category>
<Price>36.20</Price>
<Quantity>01</Quantity>
</Item>
<Balance>81.84</Balance>
<Currency>Euros</Currency>
</Invoice>
</SaleList>
<Trailer>
<CompletionTime>12.00.00</CompletionTime>
</Trailer>
</SaleEnvelope>

기본 페이지 아이콘   샘플 홈으로 돌아가기