Soccer Results サンプルについて

SoccerResults サンプルは、パブリッシュ/サブスクライブ・タイプのメッセージングを使用して、データをトランスポートします。 詳細については、WebSphere Message Brokers の資料で、パブリッシュ/サブスクライブ・メッセージングを参照してください。

Soccer Results サンプルは、サッカーの試合の最中にその試合のスコアをレポートする結果収集サービスを例示しています。このサンプルは、試合結果をシミュレートしてパブリッシュする 1 つ以上のパブリッシャー・アプリケーション、および現在行われているすべての試合結果をサブスクライブする 1 つのサブスクライバー・アプリケーションで構成されています。シミュレートした試合でゴールが入ると、そのゴールが入った時間とどちらのチームが得点したのかという情報がパブリッシュされます。

Soccer Results サンプルには、コマンド行から実行する 2 つの小規模なアプリケーションが組み込まれています。

Soccer Results サンプルでは、WebSphere Message Brokers パブリッシュ/サブスクライブ・アプリケーションの以下の機能が例示されています。

SoccerResults サンプルは以下のアクションを実行します。

  1. SoccerResults アプリケーションを始動すると、次のサブスクリプションをブローカーに登録します。
  2. SoccerGame アプリケーションのインスタンスを始動すると、2 つのチーム同士のサッカーの試合をシミュレートします。
  3. 試合が開始し、終了し、またゴールが入ると、SoccerGame アプリケーションはイベント情報を以下のトピックの SOCCER_PUBLICATION キューにパブリッシュして表示します。
  4. イベント情報が含まれるメッセージは、SoccerPublish メッセージ・フローを介して SOCCER_SUBSCRIPTION サブスクリプション・キューに渡されます。
  5. SoccerResults は、SOCCER_SUBSCRIPTION キューからパブリケーションを受け取ります。ステップ 1 で SoccerResults は、「Sport/Soccer/Event/#」 トピックの任意のパブリケーションをサブスクライブしたからです。こうしたパブリケーションは保存されません。新規パブリケーションを受け取ると、以前のパブリケーションはサブスクライバーにもはや関与しなくなります。
  6. SoccerResults は各パブリケーションを受け取ると、スコアおよび状態情報をトピック Sport/Soccer/State/LatestScore/Team1 Team2 のブローカーにパブリッシュします。 Team1Team2 は、試合に参加している各チームの名前です。 この状態情報は、ブローカーによって保存パブリケーションとして保管されます。
  7. SoccerResults 結果サーバーで試合中に障害が発生する場合には、再始動すると Request Update コマンドを発行して、障害が発生する前にパブリッシュした「Sport/Soccer/State/LatestScore/#」 の保存パブリケーションを要求します。これは、サーバーが停止した時点での試合の状態を結果サーバーが再構成できるということです。それから、SOCCER_SUBSCRIPTION キューの「Sport/Soccer/Event/#」 トピックのすべてのイベント・パブリケーションを処理できます。これらは結果サーバーが停止していた際に SoccerGame がパブリッシュし、メッセージ・フローが処理したものです。SoccerResults 結果サーバーで障害が発生したとしても、Deregister Subscriber コマンドを発行して登録を取り消すよう依頼しなかったため、このトピックを依然としてサブスクライブします。

以下のセクションでは、サンプルのリソースを詳細に説明しています。

パブリケーション・メッセージ

Soccer Results サンプルは自己定義 XML メッセージを使用します。それには、標準メッセージ・テンプレートがあり、以下が含まれています。

SoccerGame アプリケーションは、このメッセージ・テンプレートの情報を使用して、イベント情報を含むメッセージを SOCCER_PUBLICATION キューにパブリッシュします。たとえば、試合が開始されると、SoccerGame アプリケーションは以下のデータを MQRFH2 ヘッダーに含むメッセージをパブリッシュします。

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

SoccerResults アプリケーションが Team1 と Team2 の試合の最新スコアをパブリッシュすると、パブリッシュされるメッセージには、次のデータが MQRFH2 ヘッダーに含まれます。

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

メッセージ・フロー

下の図は、Soccer Results サンプルでパブリケーション・メッセージを処理する SoccerPublish メッセージ・フローを 示しています。

SoccerPublish メッセージ・フローの画面取り

下の表では、SoccerPublish メッセージ・フローで使用されるノードのタイプをリストしています。

ノード・タイプ ノード名
MQInput SOCCER_PUBLICATION
Publication Publish Results

詳しくは、WebSphere Message Brokers の資料で、SoccerPublish メッセージ・フローのノードおよびメッセージ・フローについて参照してください。

SoccerPublish メッセージ・フローには、2 つのノードしか含まれていないため、とても単純なフローです。MQInput ノードは、SOCCER_PUBLICATION パブリケーション・キューを入力キューとして識別するために構成されています。SoccerGame パブリッシャー・アプリケーションがイベント情報を、自己定義 XML メッセージとして SOCCER_PUBLICATION キューにパブリッシュする場合、MQInput ノードはそのメッセージを取得して、Publish Results Publication ノードに渡します。

Publication ノードは、イベント情報をパブリッシュしたトピックをサブスクライブした、SoccerResults サブスクライバー・アプリケーションにメッセージをパブリッシュします。

WebSphere MQ キュー

Soccer Results サンプル・メッセージ・フローは、WebSphere MQ キューと相互作用します。 そのキューは、メッセージ・フローが実行するブローカーをホストする WBRK6_DEFAULT_QUEUE_MANAGER キュー・マネージャー上に 定義されます。

下の表は、SoccerPublish メッセージ・フローが使用するキュー、およびその対話方法を示しています。

メッセージ・フロー キュー メッセージ・フローによるキューの使用方法
SoccerPublish SOCCER_PUBLICATION SoccerGame パブリッシャー・アプリケーションの 1 つ以上のインスタンスがキューにパブリッシュした、イベント情報を取得します。
SOCCER_SUBSCRIPTION SoccerResults サブスクライバー・アプリケーションのキュー上にパブリケーションを入れ、ブローカーにパブリッシュします。

メインページのアイコン   サンプルのホームに戻る