機能説明
当該アプリケーションを複数のメッセージキューからすべて切断します。
記述形式
#include "mqdapi.h" int mqd_disconnectqex(MQD_MessageQueueex *queuegroup, int *errqueindex, MQD_Environment *env)
パラメタ
mqd_connectqex関数から返されたメッセージキューグループへのポインタをそのまま指定します。
異常が発生したメッセージキューのインデックスが通知されます。複数異常が発生した場合は最初のメッセージキューのインデックスが通知されます。インデックスは、mqd_connectqex関数で指定したメッセージキュー名の配列のインデックスで、以下のように通知されます。
0,1,2,…,n:異常が発生したメッセージキューのインデックス
-1:メッセージキューに関係なく異常復帰した場合
例外処理のための復帰情報へのポインタを指定します。エラー詳細コードに以下の値が返されます。復帰情報(MQD_Environment構造体)の詳細については、“8.4 復帰情報の説明”を参照してください。
MQD_ERR_SYNTAX
MQD_ERR_NOSYSTEM
MQD_ERR_ONTRAN
MQD_ERR_NOTEOU
MQD_ERR_BACKOUT
MQD_ERR_UNITMSGOVER
MQD_ERR_UNITSUMOVER
MQD_ERR_NOQUE
MQD_ERR_QUEWINHIBIT
MQD_ERR_NOCONNECT
MQD_ERR_NOCONNECTQUE
MQD_ERR_IO
MQD_ERR_NOMEMORY
MQD_ERR_NODISK
復帰値
本関数の処理結果が以下の復帰値で通知されます。
正常時:0
異常時: -1
注意事項
本関数を使用する場合は、事前にmqd_connectqex関数でメッセージキューに接続してください。
mqd_beginによって開始したトランザクションの途中で MQDからの切断を行った場合の注意事項を以下に示します。
アプリケーションはメッセージキューから切断されます。ただし、エラー詳細コードには“MQD_ERR_ONTRAN”が通知されます。
処理中のトランザクションはシステムから取り消されます。
ユニットの途中(ユニット内の最後のメッセージを受信する前)でメッセージキューからの切断を行った場合の注意事項を以下に示します。
アプリケーションはメッセージキューから切断されます。ただし、エラー詳細コードには“MQD_ERR_NOTEOU”が通知されます。
ユニット内のすでに受信済のメッセージはすべて取り消されます。ただし、グローバルトランザクション処理中の場合を除きます。
グローバルトランザクション処理中の場合には、グローバルトランザクションを終了(ロールバック)させて、ユニット内のすでに受信済のメッセージを取り消す必要があります。
本関数が異常復帰した場合でも、メッセージキューグループのすべてのメッセージキューから切断します。ただし、復帰情報は最初に異常が発生したメッセージキューの復帰情報が通知されます。
当該アプリケーションがmqd_connectrdb関数を使用してMQDに接続している場合の注意事項を以下に示します。
本関数の前で、トランザクションの終了またはトランザクションの取消しを行ってください。
トランザクションの途中でメッセージキューからの切断を行った場合、アプリケーションはメッセージキューから切断されます。この時、エラー詳細コードには“MQD_ERR_ONTRAN”が通知されます。なお、処理中のトランザクションは取り消されないため、“SQL ROLLBACK文”を使用してトランザクションを取り消してください。