Message Routing サンプルの実行

Message Routing サンプルの実行は以下の 2 つの主な部分に分けられます。

これらの 2 つの部分を別個に説明します。このセクションで言及されているテスト・メッセージすべては、Message routing sample message flows というメッセージ・フロー・プロジェクトの Test messages ディレクトリーにあります。

入力テスト・メッセージ

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

<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. Direct_database_message1 というテスト・メッセージ・エンキュー・ファイルを開きます。「ポート」フィールドに値 2414 が入力されていることを確認してください。
  2. 「キューへ書き込み」をクリックします。 メッセージが ROUTING.DATABASE.IN1 キューに送られます。メッセージ・フローが、メッセージを ROUTING.OUT1 キューに経路指定します。
  3. メッセージが正しいキューに到達したかどうかを確認するには、WebSphere MQ Explorer を使用します。
    1. WebSphere MQ Explorer を開始します。
    2. 「キュー・マネージャー」フォルダーを 右クリックし、「キュー・マネージャーの表示」 を選択します。 WBRK6_DEFAULT_QUEUE_MANAGER を入力します。
    3. キュー・マネージャーの下のフォルダーを展開し、「キュー」を選択します。 キュー画面を最新表示して、それぞれのキュー上にある現在のメッセージ数を表示します。 WebSphere MQ v5.3 を Windows で使用している場合、WebSphere MQ Explorer を最新表示するときは、実際のキュー名では なく「キュー」フォルダーが選択されていることを確認してください。 そうでないと、示されたキュー名の一部しか最新表示されません。
    4. サンプルの残りについて、WebSphere MQ Explorer を使用し、メッセージが正しい場所に経路指定されたかどうかを 確認します。
  4. Direct_database_message2 というエンキュー・ファイルを開き、メッセージをキューに書き込みます。
  5. WebSphere MQ Explorer を最新表示します。 メッセージが ROUTING.OUT19 キューに出力されるはずです。

上記のすべてのステップが機能したなら、サンプルの最初の部分は完了になります。 メッセージ・フロー Routing_using_database_table の ESQL を参照し、 経路指定が行われた方法を確認してください。

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

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

  1. Memory_cache_message1 というテスト・メッセージ・エンキュー・ファイルを開き、メッセージをキューに書き込みます。
  2. WebSphere MQ Explorer を最新表示します。 新しいメッセージが ROUTING.OUT1 キューに出力されるはずです (合計 2 つのメッセージ)。
  3. Memory_cache_message2 というテスト・メッセージ・エンキュー・ファイルを開き、メッセージをキューに書き込みます。
  4. WebSphere MQ Explorer を最新表示します。 新しいメッセージが ROUTING.OUT19 キューに出力されるはずです (合計 2 つのメッセージ)。
  5. ここまで、機能面に限って言えば、このフローと先のフローの動作はまったく同じですが、こちらのフローではキャッシュに入れたバージョンのデータベース表を使用しています。キャッシュを使用することの影響をテストするため、データベース表に変更を加えます。これは、メモリー内のキャッシュをどのようにリフレッシュできるかを示すためです。データベース表を変更するには次のようにします。

    DB2

    1. DB2 コマンド・ウィンドウ (Windows の場合) またはコマンド・コンソール (Linux の場合) で、次のコマンドを 入力します。

      db2cmd

    2. コマンド・プロンプトから db2 と入力して、DB2 コマンド行を開始します。
    3. ROUTING データベースに接続します。

      DB2> connect to ROUTING user user using password

      user は、ROUTING データベースにアクセスするための権限を持つユーザーです。 これは通常、サンプル・ブローカーを作成するために使用したものと同じユーザーです。
      password は、そのユーザーに使用するパスワードです。

    4. キュー ROUTING.OUT18 に書き込むように、routing_table の最後の項目を更新します。

      DB2> update routing_table set queue_name='ROUTING.OUT18' where Variable3='Braithwaite'

    Derby

    1. ij コマンド行を開始します。 ij コマンド行のバッチ・ファイルをまだセットアップしていない 場合は、Derby データベースの内容の表示を 参照してください。
    2. キュー ROUTING.OUT18 に書き込むように、routing_table の最後の項目を更新します。

      ij>update routing_table set queue_name='ROUTING.OUT18' where Variable3='Braithwaite';

  6. Memory_cache_message2 というテスト・メッセージ・エンキュー・ファイルを開き、メッセージをキューに書き込みます。
  7. WebSphere MQ Explorer を最新表示します。 新しいメッセージが ROUTING.OUT19 キューに出力されるはずです (合計 3 つのメッセージ)。 データベース表が再読み取りされなかったために、メッセージが新しいキュー名に経路指定されていないことに注意してください。
  8. フローにデータベースの再読み取りをさせるために、エンキュー・ファイル Refresh_cache_message1 を開き、メッセージをキューに書き込みます。
  9. ステップ 3 を繰り返して、テスト・メッセージをメッセージ・フローに送信します。
  10. WebSphere MQ Explorer を最新表示します。 新しいメッセージが ROUTING.OUT18 キューに出力されるはずです (合計 1 つのメッセージ)。これでメモリーに保管されたデータベース表がリフレッシュされたことになります。

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

上記のすべてのステップが機能したなら、サンプルの実行は完了です。 メッセージ・フロー Routing_using_memory_cache の ESQL を参照し、 どのようにデータベースが共用変数に保管されたかを確認します。

結果を理解する

Message Routing サンプルは、出力を変更せずに、入力テスト・メッセージをさまざまな出力キューに経路指定します。 出力メッセージは、入力テスト・メッセージと同じです。 2 つの部分で挙げたステップに、メッセージの経路指定先の詳細が記載されています。 WebSphere MQ Explorer を使用して、メッセージが正しいキューに経路指定されたかどうかを確認できます (上記のステップで 詳述されているとおり)。 また、Message Brokers Toolkit の一部であるデキュー・プログラムを使用して、キューのメッセージの内容を確認することが できます。 デキュー・プログラムにアクセスするには、ツールキット・ツールバーの「デキュー」アイコンをクリックしてください。

デキュー・プログラムの場所

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