Browsing WebSphere MQ Queues サンプルの拡張

サンプルを拡張して、WebSphere MQ キューのブラウズに関してさらに学習することができます。サンプルの拡張法を知りたい場合は、以下の指示をご使用ください。

閲覧済みメッセージを除去する際のパフォーマンスの改善

BrowseGet メッセージ・フロー中で、スタッフ番号が 2 に等しい場合に入力キューから閲覧済みメッセージを除去するのに MQGet ノードが使用されました。デフォルトのノード・オプションを使用して、ブラウズ操作と取得操作の両方に関して、入力メッセージが読み取られて構文解析されます。オリジナルのメッセージは、ブラウズ操作から取得操作までの間に変更されなかったので、再構文解析は必要ありません。 以下のプロパティーを MQGet ノード上で設定します。

これらの変更をプロパティーに加えた結果は以下のとおりです。

メッセージがブラウズ済みかどうかの検査

入力メッセージがブラウズ済みかどうかや、メッセージ・フローの設計から除去されたかどうかを確認できることがあります。 しかし、場合によっては、メッセージがブラウズ済みかどうかを確かめられないこともあります。 すでに除去済みのメッセージの除去を試みるのは、MQGet ノードを使用してそのメッセージを NoMsg ターミナルに伝搬することになるので、余分なステップです。

MQGet ノードに入る前に以下のチェックを追加して、メッセージが既に閲覧済みかどうかを調べることができます。

LocalEnvironment.MQ.GET.Browsed = TRUE

まだ閲覧済みでないメッセージの LocalEnvironment.MQ.GET.Browsed フィールドは存在していません。

メッセージの再ブラウズ

メッセージを再ブラウズしたい場合や、一部のメッセージがすでに失われている場合、MQInput ノードを入力キューの先頭に戻し、最初からブラウズすることができます。 例えば、キューで MsgDeliverySequence が MQMDS_PRIORITY に設定されている場合に、現在ブラウズ・カーソルが指し示しているものより高い優先順位にあるメッセージがキューに到着すると、そのメッセージは失われる可能性があります。

MQInput ノードの「ブラウズ・タイムアウトのリセット (ms)」プロパティーを、ミリ秒単位の正のインターバルに設定します。 そのインターバル中に入力キューに新規のメッセージが到着しなければ、MQInput ノードはキューの先頭からブラウズを開始します。

staffmsg1 メッセージがまだキュー上にあれば、それは再ブラウズされます。そのメッセージを処理するようにフローを変更しない限り、それが再ブラウズされたかどうかは分かりません。

サンプルのホームに戻る