MQI チャネルの停止中
サーバー接続のチャネルに STOP CHANNEL コマンドを発行すると、クライアント接続のチャネルを停止するために使用する方式を選択できます。 つまり、MQGET Wait 呼び出しを発行するクライアント・チャネルを制御でき、チャネルを停止する方法とタイミングを決定できます。
STOP CHANNEL コマンドは以下の 3 つのモードで発行できます。これらは、チャネルを停止する方法を示しています。
- 静止
- 現在のメッセージが処理されてからチャネルを停止します。
- 強制
- 即時にチャネルを停止します。
- 終了
- 即時にチャネルを停止します。 チャネルがプロセスとして実行されている場合は、チャネルのプロセスが終了します。スレッドとして実行されている場合は、スレッドが終了します。
これは段階的なプロセスです。 終了モードが使用される場合、まず静止モード、次に強制モードでサーバー接続チャネルの停止が試行され、さらに必要であれば、終了モードが使用されます。 終了のさまざまな段階で、クライアントがさまざまな戻りコードを受け取る場合があります。 プロセスまたはスレッドが終了されると、クライアントは通信エラーを受け取ります。
アプリケーションに戻される戻りコードは、発行される MQI 呼び出し、および発行される STOP CHANNEL コマンドによって異なります。 クライアントは、MQRC_CONNECTION_QUIESCING または MQRC_CONNECTION_BROKEN のどちらかの戻りコードを受け取ります。 MQRC_CONNECTION_QUIESCING を検出したクライアントは、現在のトランザクションを完了させ、終了させようと試みます。 これは MQRC_CONNECTION_BROKEN ではできません。 素早くトランザクションを完了、終了できなかったクライアントは、数秒後に CONNECTION_BROKEN を受信します。 MODE(FORCE) または MODE(TERMINATE) を使った STOP CHANNEL コマンドは、MODE(QUIESCE) を使った場合よりも、CONNECTION_BROKEN になる可能性が高くなります。