データベースを使用する Message Routing サンプルの実行

Message Routing サンプルの実行は、次の 2 つのシナリオに分かれます。

これらの 2 つのシナリオを別個に説明します。このセクションで使用されるすべてのテスト・メッセージは、Message routing sample message flows メッセージ・ブローカー・プロジェクトの Test messages ディレクトリーに保管されています。

サンプルの実行時に問題を検出した場合は、 WebSphere Message Broker 資料の『サンプル実行時の問題の解決』を参照してください。

入力テスト・メッセージ

このサンプルの実行に使用されるすべてのテスト・メッセージは、以下のフォーマットに基づいています。

<SaleEnvelope>
  <Header>
    <SaleListCount>1</SaleListCount>
  </Header>
  <SaleList>
    <Invoice>
      <Initial>T</Initial>
      <Initial>D</Initial>
      <Surname>Montana</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>
  </SaleList>
  <Trailer>
    <CompletionTime>12.00.00</CompletionTime>
  </Trailer>
</SaleEnvelope>

Initial および Surname フィールドはメッセージを経路指定するために使われます。

サンプルの実行

データベース表への直接接続を使用したメッセージの経路指定

サンプルのこの部分では、Routing_using_database_table メッセージ・フローが使用されます。メッセージ・フローには ROUTING.DATABASE.IN1 という 1 つの入力キューが含まれています。 メッセージ・フローはメッセージを、その内容に基づき、20 の出力キューの内の 1 つに経路指定できます (ROUTING.OUT の後に 1 から 19 の数字が付いたキューと、ROUTING.DEFAULT というキュー)。サンプルのこの部分を実行するには、次のようにします。

  1. 「ブローカー開発」ビューで、Message routing sample message flows プロジェクトを展開します。 「フロー・テスト」の下の Database_Direct_message1.mbtest をダブルクリックして、テスト・クライアントでこのファイルを開きます。
  2. テスト・クライアントで「エンキュー」に続いて「メッセージの送信」をクリックして、メッセージを ROUTING.DATABASE.IN1 キューに送ります。 メッセージ・フローが、メッセージを ROUTING.OUT1 キューに経路指定します。
  3. テスト・クライアントで「デキュー」に続いて「メッセージの取得」をクリックして、メッセージを ROUTING.OUT1 キューから読み取ります。
  4. 「テスト・メッセージ」の下の Database_Direct_message2.mbtest をダブルクリックして、テスト・クライアントでこのファイルを開きます。
  5. テスト・クライアントで「エンキュー」に続いて「メッセージの送信」をクリックして、メッセージを ROUTING.DATABASE.IN1 に送ります。 メッセージ・フローが、メッセージを ROUTING.OUT19 キューに経路指定します。
  6. テスト・クライアントで「デキュー」に続いて「メッセージの取得」をクリックして、経路指定されたメッセージを ROUTING.OUT19 キューから読み取ります。

ここまでのステップがすべて正常に終了したら、サンプルの最初の部分は完了です。 経路指定がどのようにプログラムされているかを確認するには、メッセージ・フローの ESQL を調べて、Routing_using_database_table_Compute を確認してください。

データベース表のメモリー内キャッシュを使用したメッセージの経路指定

サンプルのこの部分は Routing_using_memory_cache メッセージ・フローを使用します。 これには ROUTING.DATABASE.MEMORY.IN1 および ROUTING.REFRESH.IN1 という 2 つの入力キューが含まれています。 メッセージ・フローは、メッセージの内容に基づいて 20 個のキューのいずれか 1 つにメッセージを経路指定できます (ROUTING.OUT の後に 1 から 19 の数字が付いたキューと、ROUTING.DEFAULT というキュー)。 経路指定のロジックはキャッシュしないバージョンと同じですが、共用変数を使ってデータベースをメモリーにキャッシュする点が異なります。サンプルのこの部分を実行するには、以下のステップを実行します。

  1. 「ブローカー開発」ビューで、Message routing sample message flows プロジェクトを展開します。 「テスト・メッセージ」の下の Database_Memory_cache_message1.mbtest をダブルクリックして、テスト・クライアントでこのファイルを開きます。
  2. テスト・クライアントで「エンキュー」に続いて「メッセージの送信」をクリックして、ROUTING.DATABASE.MEMORY.IN1 キューにメッセージを書き込みます。
  3. テスト・クライアントで「デキュー」に続いて「メッセージの取得」をクリックして、メッセージを ROUTING.OUT1 キューから取得します。
  4. 「テスト・メッセージ」の下の Database_Memory_cache_message2.mbtest をダブルクリックして、テスト・クライアントでこのファイルを開きます。
  5. テスト・クライアントで「エンキュー」に続いて「メッセージの送信」をクリックして、ROUTING.DATABASE.MEMORY.IN1 キューにメッセージを書き込みます。
  6. テスト・クライアントで「デキュー」に続いて「メッセージの取得」をクリックして、メッセージを ROUTING.OUT19 キューから取得します。
  7. ここまで、機能面に限って言えば、このフローと先程のフローの動作はまったく同じですが、このフローではキャッシュに入ったバージョンのデータベース表を使用します。 キャッシュを使用することの影響をテストするため、データベース表に変更を加えます。 これは、メモリー内のキャッシュをどのようにリフレッシュできるかを示すためです。 データベースのデータベース表を変更するには、次のようにします。
  8. Database_Memory_cache_message2.mbtest をダブルクリックして、テスト・クライアントでこれを開きます。
  9. テスト・クライアントで「エンキュー」に続いて「メッセージの送信」をクリックして、ROUTING.DATABASE.MEMORY.IN1 キューにメッセージを書き込みます。
  10. テスト・クライアントで「デキュー」に続いて「メッセージの取得」をクリックして、メッセージを ROUTING.OUT19 キューから取得します。 データベース表が再び読み取られていないため、メッセージは新しいキュー名に経路指定されません。
  11. フローでデータベースを再び読み取るには、「テスト・メッセージ」の下の Database_Refresh_cache_message1.mbtest を開き、「エンキュー」に続いて「メッセージの送信」をクリックして、ROUTING.DATABASE.REFRESH.IN1 キューにメッセージを書き込みます。
  12. Database_Memory_cache_message2.mbtest をダブルクリックしてテスト・クライアントでこれを開き、「エンキュー」に続いて「メッセージの送信」をクリックして、ROUTING.DATABASE.MEMORY.IN1 キューにメッセージを書き込みます。
  13. テスト・クライアントで「デキュー」に続いて「メッセージの取得」をクリックして、経路指定されたメッセージを ROUTING.OUT18 キューから読み取ります。

データベースの queue_name を使用可能な別のキュー名の 1 つに変更して、ステップ 9 から 13 を繰り返すことができます。 Database_Refresh_cache_message1 メッセージを使用する代わりに、メッセージ・フローを停止および再始動することもできます。この場合も、キャッシュされたデータベース表がリフレッシュされます。

ここまでのステップがすべて正常に終了したら、サンプルは完了です。 データベースを共用変数に保管する方法については、メッセージ・フローの ESQL を調べて、Routing_using_database_and_memory_cache_Compute を確認してください。

結果を理解する

Message Routing サンプルは、出力を変更せずに、入力テスト・メッセージをさまざまな出力キューに経路指定します。 出力メッセージは、入力テスト・メッセージと同じです。 2 つのシナリオで挙げたステップに、メッセージの経路指定先の詳細が記載されています。 メッセージが正しいキューに経路指定されることを確認するには、WebSphere MQ Explorer を使用するか、テスト・クライアントのデキューを使用できます。

サンプルのホームに戻る