WebSphere MQ を使用した基本メッセージング

Db2® MQ 機能を使ったメッセージングの最も基本的な形は、 すべてのデータベースアプリケーションが同じ Db2 データベースサーバーに接続するときに発生します。 クライアントは、データベース・サーバーのローカル側にあっても、ネットワーク環境に分散していても構いません。

単純なシナリオとして、クライアント A が、MQSEND 関数を呼び出して、ユーザー定義ストリングをデフォルト・サービスで定義された場所に送信します。 Db2 は、データベース・サーバー上でこの操作を実行する MQ 関数を実行します。 しばらく後に、クライアント B が MQRECEIVE 関数を呼び出し、 デフォルト・サービスで定義されたキューの先頭のメッセージを除去してから、それをクライアントに返します。 Db2 は、データベース・サーバー上でこの操作を実行する MQ 関数を実行します。

データベース・クライアントは、以下のようないくつかの方法で単純なメッセージングを使用できます。
  • データの収集

    情報を 1 つ以上のソースからメッセージの形式で受け取ります。 情報源は、任意のアプリケーションを使用できます。 データはキューから受け取り、追加の処理を行うためにデータベース表に保管されます。

  • ワークロードの分散

    同じアプリケーションの複数のインスタンスが共有するキューに作業要求を追加します。 アプリケーション・インスタンスは、作業を実行する準備が整うと、作業要求が入ったメッセージをキューの先頭から受け取ります。 アプリケーションの複数インスタンスが、プールされた要求の単一のキューによって表されるワークロードを共有できます。

  • アプリケーションのシグナル

    複数のプロセスが共同作業を行う状況では、それぞれの作業を調整するためにメッセージが使用されることがよくあります。 こうしたメッセージには、実行する必要があるコマンドや要求を含めることができます。 この手法の詳細については、 WebSphere MQ を使用したアプリケーション間接続」を参照してください。

次のシナリオでは、基本的なメッセージングを拡張してリモート・メッセージングを取り入れています。 マシン A がマシン B にメッセージを送信すると想定します。
  1. Db2 クライアントは、マシン B 上のリモート・キューとして定義されているターゲット・サービスを指定して、MQSEND 関数呼び出しを実行します。
  2. MQ 関数が、メッセージを送信する作業を実行します。 マシン A 上の WebSphere MQ サーバーは、メッセージを受け入れ、サービスによって定義された宛先、およびマシン A の現在の MQ 構成にメッセージを送信することを保証します。 サーバーは、宛先がマシン B 上のキューであると判断します。 その後、サーバーは、必要に応じて再試行して、マシン B 上の WebSphere MQ サーバーにメッセージを配信しようとします。
  3. マシン B 上の WebSphere MQ サーバーは、マシン A 上のサーバーからメッセージを受け入れ、それをマシン B 上の宛先キューに入れます。
  4. マシン B 上の WebSphere MQ クライアントが、キューの先頭にあるメッセージを要求します。
MQI API からエラーが返された場合、指定された Db2 MQ 関数はエラーを返す。 エラーには失敗した MQ API の名前、MQ 条件コード、および MQ 理由コードが記述されます。 障害の原因を特定するには、Websphere MQSeries® IBM i ドキュメントのトピックを参照する必要があります。 例えば、存在しない MQSeries キュー・マネージャーの名前がサービスに含まれている場合、以下のエラーが返されます。
 SQL State: 38401
 Vendor Code: -443
 Message: [SQL0443] cc=2:rc=2058:MQCONN FAILED
 

このメッセージは、MQCONN API が理由コード 2058 で失敗したことを示します。 Websphere MQSeries インフォメーション・センターに、理由コード 2058 の詳細な説明があります。