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 というキュー)。サンプルのこの部分を実行するには、次のようにします。
ここまでのステップがすべて正常に終了したら、サンプルの最初の部分は完了です。 経路指定がどのようにプログラムされているかを確認するには、メッセージ・フローの 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 というキュー)。 経路指定のロジックはキャッシュしないバージョンと同じですが、共用変数を使ってデータベースをメモリーにキャッシュする点が異なります。サンプルのこの部分を実行するには、以下のステップを実行します。
DB2
db2cmd
db2
DB2> connect to ROUTING user user using passwordここで、user は ROUTING データベースへのアクセス権限を持つユーザー (通常は、サンプル・ブローカーを作成するために使われたのと同じユーザー) です。password はそのユーザーのパスワードです。
DB2> update routing_table set queue_name='ROUTING.OUT18' where Variable3='Braithwaite'
DB2> disconnect ROUTING
Oracle
sqlplus <user>/<password>ここで、user は routing_table 表へのアクセス権限を持つユーザー (通常は、サンプル・ブローカーを作成するために使われたのと同じユーザー) です。password はそのユーザーのパスワードです。
update routing_table set queue_name='ROUTING.OUT18' where Variable3='Braithwaite';
データベースの queue_name を使用可能な別のキュー名の 1 つに変更して、ステップ 9 から 13 を繰り返すことができます。 Database_Refresh_cache_message1 メッセージを使用する代わりに、メッセージ・フローを停止および再始動することもできます。この場合も、キャッシュされたデータベース表がリフレッシュされます。
ここまでのステップがすべて正常に終了したら、サンプルは完了です。 データベースを共用変数に保管する方法については、メッセージ・フローの ESQL を調べて、Routing_using_database_and_memory_cache_Compute を確認してください。
Message Routing サンプルは、出力を変更せずに、入力テスト・メッセージをさまざまな出力キューに経路指定します。 出力メッセージは、入力テスト・メッセージと同じです。 2 つのシナリオで挙げたステップに、メッセージの経路指定先の詳細が記載されています。 メッセージが正しいキューに経路指定されることを確認するには、WebSphere MQ Explorer を使用するか、テスト・クライアントのデキューを使用できます。