Soccer Results 샘플 정보

SoccerResults 샘플은 publish/subscribe 유형의 메시징을 사용하여 데이터를 전송합니다. 자세한 정보는 WebSphere Message Broker 문서에 있는 publish/subscribe 메시징을 읽으십시오.

Soccer Results 샘플에서는 경기가 진행되는 동안 축구 경기의 점수를 보고하는 결과 집계 서비스를 보여줍니다. 샘플은 하나 이상의 publisher 응용프로그램(경기 결과를 시뮬레이트하여 publish함)과 하나의 subscriber 응용프로그램(진행 중인 모든 경기의 결과를 subscribe함)으로 구성됩니다. 시뮬레이션 경기에서 골이 기록되는 대로 골을 넣은 시간 및 골을 넣은 팀에 대한 정보가 publish됩니다.

Soccer Results 샘플은 명령행에서 실행되는 두 개의 작은 응용프로그램을 포함합니다.

Soccer Results 샘플에서는 다음과 같은 WebSphere Message Brokers publish/subscribe 응용프로그램 기능을 보여줍니다.

SoccerResults 샘플은 다음 조치를 수행합니다.

  1. SoccerResults 응용프로그램이 시작되면 다음 subscription을 브로커에 등록합니다.
  2. SoccerGame 응용프로그램의 인스턴스가 시작되면 두 팀 간의 축구 경기를 시뮬레이트합니다.
  3. 경기가 시작되고 끝나거나 골 득점이 발생하면, SoccerGame 응용프로그램은 다음 토픽에 대한 이벤트 정보를 SOCCER_PUBLICATION 큐에 publish하고 표시합니다.
  4. 이벤트 정보를 포함하는 메시지는 SoccerPublish 메시지 플로우를 통해 SOCCER_SUBSCRIPTION subscription 큐로 전달됩니다.
  5. 1 단계에서 SoccerResults가 Sport/Soccer/Event/# 토픽에 대한 모든 publication을 subscribe했기 때문에 SoccerResults는 SOCCER_SUBSCRIPTION 큐에서 publication을 수신합니다. 새 publication을 수신하면 이전 publication은 더 이상 subscriber와 관련이 없으므로 보유되지 않습니다.
  6. SoccerResults가 각 publication을 수신하면, 점수 및 상태 정보를 Sport/Soccer/State/LatestScore/Team1 Team2 토픽으로 브로커에게 publish합니다. 여기서 Team1Team2는 경기 중인 팀의 이름입니다. 이 상태 정보는 브로커에 의해 보유 publication으로 저장됩니다.
  7. 경기 중에 SoccerResults 결과 서버가 실패할 경우, 재시작하면 결과 서버는 실패하기 전에 publish된 Sport/Soccer/State/LatestScore/#에 대한 보유 publication을 요청하기 위해 Request Update 명령을 발행합니다. 이는 결과 서버가 서버가 중지되었던 때의 경기 상태를 재구성할 수 있음을 의미합니다. 그런 다음, 결과 서버가 정지되어 있던 동안 SoccerGame에 의해 publish되어 메시지 플로우에 의해 처리되었던 SOCCER_SUBSCRIPTION 큐에 있는 Sport/Soccer/Event/# 토픽에 대한 모든 이벤트 publication을 처리할 수 있습니다. SoccerResults 결과 서버가 실패하더라도 등록을 취소하는 Deregister Subscriber 명령을 발행하지 않았으므로 계속해서 토픽을 subscribe하고 있습니다.

다음 절에서는 샘플 자원에 대해 자세히 설명합니다.

publication 메시지

Soccer Results 샘플에서는 다음을 포함하는 표준 메시지 템플리트가 있는 자체 정의 XML 메시지를 사용합니다.

SoccerGame 응용프로그램은 이 메시지 템플리트 내의 정보를 사용하여 이벤트 정보를 포함하는 메시지를 SOCCER_PUBLICATION 큐에 publish합니다. 예를 들어, 경기가 시작되면 SoccerGame 응용프로그램은 MQRFH2 헤더에 다음과 같은 데이터를 포함하는 메시지를 publish합니다.

<psc>
   <Command>Publish</Command>
   <Topic>Sport/Soccer/Event/MatchStarted</Topic>
</psc>

SoccerResults 응용프로그램이 Team1과 Team2 간 경기의 최종 점수를 publish하면, publish되는 메시지의 MQRFH2 헤더에는 다음과 같은 데이터가 포함되어 있습니다.

<psc>
   <Command>Publish</Command>
   <PubOpt>Retain</PubOpt><Topic>Sport/Soccer/State/LatestScore/Team1 Team2</Topic>
</psc>

메시지 플로우

다음 그림은 Soccer Results 샘플에서 publication 메시지를 처리하는 SoccerPublish 메시지 플로우를 보여줍니다.

SoccerPublish 메시지 플로우의 화면 캡처

다음 표에서는 SoccerPublish 메시지 플로우에서 사용하는 노드 유형을 나열합니다.

노드 유형 노드 이름
MQInput SOCCER_PUBLICATION
Publication Publish Results

자세한 정보는 WebSphere Message Broker 문서에 있는 SoccerPublish 메시지 플로우의 노드메시지 플로우를 읽으십시오.

SoccerPublish 메시지 플로우에는 두 개의 노드만 들어 있으므로 매우 간단합니다. MQInput 노드는 SOCCER_PUBLICATION publication 큐를 입력 큐로 식별하도록 구성됩니다. SoccerGame publisher 응용프로그램이 이벤트 정보를 자체 정의 XML 메시지로서 SOCCER_PUBLICATION 큐에 publish하면, MQInput 노드는 메시지를 가져와 Publish Results Publication 노드로 전달합니다.

Publication 노드는 이벤트 정보가 publish된 토픽을 subscribe했던 SoccerResults subscriber 응용프로그램에 메시지를 publish합니다.

WebSphere MQ 큐

Soccer Results 샘플 메시지 플로우는 두 개의 WebSphere MQ 큐와 상호작용합니다. 큐는 메시지 플로우를 실행할 브로커를 호스트하는 WBRK6_DEFAULT_QUEUE_MANAGER 큐 관리자에 정의되어 있습니다.

다음 표는 SoccerPublish 메시지 플로우에서 사용되는 큐 및 이러한 큐가 상호작용하는 방법을 보여줍니다.

메시지 플로우 메시지 플로우가 큐를 사용하는 방법
SoccerPublish SOCCER_PUBLICATION 하나 이상의 SoccerGame publisher 응용프로그램 인스턴스가 큐에 publish한 이벤트 publication을 가져옵니다.
SOCCER_SUBSCRIPTION SoccerResults subscriber 응용프로그램이 가져와 브로커에 publish할 수 있도록 큐에 publication을 넣습니다.

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