DELETE
/messaging/qmgr/{qmgrName}/queue/{queueName}/messageリソースを指定した HTTP DELETE メソッドを使用して、関連するキュー・マネージャーおよびキューからメッセージを取得できます。
使用可能な次のメッセージを指定されたキュー・マネージャーおよびキューから破壊的に取得し、HTTP 応答本体でメッセージ本体を返します。 キュー・マネージャーは mqweb サーバーと同じマシン上になければなりません。 メッセージはMQSTRまたはJMS
TextMessageの形式でなければならず、現在のユーザー・コンテキストを使用して受信されます。
非互換のメッセージはキューに残されて、呼び出し元には該当する状況コードが返されます。 例えば、MQSTR形式またはJMS
TextMessage形式ではないメッセージなどです。
REST API V3 は、ユーザー定義のメッセージ・プロパティーを指定する機能を追加し、メッセージとともにメッセージ優先順位を組み込みます。 ibm-mq-md-priority および ibm-mq-usr 応答ヘッダーは、 REST API V3でのみ使用可能です。 ibm-mq-md-correlationId 要求ヘッダーは、 REST API V3では異なるフォーマットになっています。 ヘッダーは、アプリケーション固有の ID にすることも、エンコードされたストリングの場合は ID: 接頭部を保持する場合に使用することもできます。 ibm-mq-md-messageId レスポンス・ヘッダーおよび照会パラメーターの形式は、 REST API V3は異なります。 ID: 接頭部は保持されます。
リソース URL
https://host:port/ibmmq/rest/v1/messaging/qmgr/{qmgrName}/queue/{queueName}/message
https://host:port/ibmmq/rest/v2/messaging/qmgr/{qmgrName}/queue/{queueName}/message
![[MQ 9.2.5 Feb 2022]](ng925.gif)
https://host:port/ibmmq/rest/v3/messaging/qmgr/{qmgrName}/queue/{queueName}/message
- qmgrName
- メッセージングのための接続先のキュー・マネージャーの名前を指定します。 キュー・マネージャーは mqweb サーバーと同じマシン上になければなりません。
- queueName
- 次のメッセージを取得するキューの名前を指定します。
HTTP 接続を使用可能にすれば、HTTPS ではなく HTTP を使用できます。 HTTP を有効にする方法の詳細については HTTP HTTPSの設定」 を参照してください。
オプションの照会パラメーター
![[REST API v2]](ngrest2.gif)
相関Id= hexValue- HTTP メソッドが次のメッセージを対応する相関 ID と共に返すように指定します。
![[MQ 9.2.5 Feb 2022]](ng925.gif)
correlationId=ID :hexValue または correlationId=application_ specific _value- HTTP メソッドが次のメッセージを対応する相関 ID と共に返すように指定します。
![[REST API v2]](ngrest2.gif)
messageId= hex 値- HTTP メソッドが次のメッセージを対応するメッセージ ID と共に返すように指定します。
![[MQ 9.2.5 Feb 2022]](ng925.gif)
messageId=ID :hexValue- HTTP メソッドが次のメッセージを対応するメッセージ ID と共に返すように指定します。
- wait=整数値
- 次のメッセージが使用可能になるまで HTTP メソッドが integerValue ミリ秒の間待機するように指定します。
要求ヘッダー
- 認証
- 基本認証を使用している場合、このヘッダーを送信する必要があります。 詳細については 、「 REST API 」の HTTP ベーシック認証の使用」 を参照してください。
- ibm-mq-rest-csrf-token
- このヘッダーを設定する必要がありますが、その値はブランクを含む任意のものにすることができます。
- Accept-Charset
- このヘッダーを使用して、応答のために許容される文字セットを指定できます。 指定する場合、このヘッダーは
UTF-8として設定する必要があります。 - Accept-Language
- このヘッダーは、応答メッセージ本体で返される例外メッセージやエラー・メッセージに必要な言語を指定します。
要求本体の形式
なし。
セキュリティー要件
呼び出し元は mqweb サーバーで認証する必要があります。 MQWebAdmin役割およびMQWebAdminRO役割は、messaging REST APIには適用されません。 REST API のセキュリティについては、 IBM MQ Console および REST API security を参照。
mqweb サーバーで認証されると、ユーザーは messaging REST API と administrative REST APIの両方を使用できるようになります。
- リソース URL の {queueName} 部分で指定されるキューは、
GETに対応している必要があります。 ![[MQ Appliance]](ngappliance.gif)
の部分によって指定されるキューについては {queueName} の部分によって指定されるキューでは、 URL、 +GET、+INQ、+BROWSE権限が呼び出し元のセキュリティプリンシパルに付与されていなければならない。
の部分によって指定されるキューでは、アクセスは呼び出し元のセキュ リティプリンシパルに付与されなければならない。 {queueName}URL UPDATEの部分によって指定されるキューでは、呼び出し元のセキュリティプリンシパルに アクセスが許可されていなければならない。
AIX®, Linux®, and Windows では、 コマンドを使用して、 リソースを使用する権限をセキュリティ・プリンシパルに付与することができます。 setmqaut IBM® MQ 詳しくは、 setmqaut (権限の付与または取り消し)を参照してください。
z/OS® については、 z/OS のセキュリティの設定を参照してください。
応答状況コード
- 200
- メッセージは正常に受信されました。
- 204
- メッセージが使用できません。
- 400
- 無効なデータが指定されました。
- 401
- 認証されませんでした。
- 403
- 許可がありません。
- 404
- キューが存在しません。
- 405
- キューでは GET が禁止されています。
- 500
- IBM MQからのサーバーの問題またはエラー・コード。
- 501
- HTTP 応答を作成できませんでした。
- 502
- メッセージング・プロバイダーが必要な関数をサポートしていないので、現在のセキュリティー・プリンシパルはメッセージを受信できません。 例えば、mqweb サーバーのクラスパスが無効です。
- 503
- キュー・マネージャーが実行されていません。
応答ヘッダー
- Content-Language
- エラーや例外が発生した場合の応答メッセージの言語 ID を指定します。 エラーまたは例外条件に必要な言語を示すために、
Accept-Language要求ヘッダーと一緒に使用されます。 要求された言語がサポートされていない場合は、mqweb サーバーのデフォルトが使用されます。 - Content-Length
- 内容が存在しない場合にも適用される、HTTP 応答本体の長さを指定します。 値には、メッセージ・データの長さ (バイト数) が含まれます。
- Content-Type
- 受信したメッセージの応答本体で返されるコンテンツのタイプを指定します。 成功すると、値は
text/plain;charset=utf-8になります。 エラーまたは例外が発生した場合、値はapplication/json;charset=utf-8になります。 ![[REST API v2]](ngrest2.gif)
ibm-mq-md-correlationId- 受信メッセージの相関 ID を指定します。 受信したメッセージに有効な相関 ID が含まれている場合、このヘッダーが返されます。 これは 24 バイトを表す、48 文字の 16 進エンコード・ストリングとして表記されます。
![[MQ 9.2.5 Feb 2022]](ng925.gif)
ibm-mq-md-correlationId- 受信メッセージの相関 ID を指定します。 受信したメッセージに有効な相関 ID が含まれている場合、このヘッダーが返されます。 相関 ID は、以下のいずれかの形式をとります。
- ストリング
"ID:"の接頭部が付いた、24 バイトを表す 48 文字の 16 進エンコード・ストリング。 以下に例を示します。ibm-mq-md-correlationId: ID:414d5120514d4144455620202020202067d8bf5923582e02 - アプリケーション固有の値。 この値は、アプリケーション固有のストリングです。
ibm-mq-md-correlationId: My-Custom-CorrelId
- ストリング
- ibm-mq-md-expiry
- 受信メッセージの有効期限までの残り時間を示します。 ヘッダーは、次の値のうちのいずれかです。
- unlimited
- メッセージは満了しません。
- 整数値
- メッセージの有効期限までの残り時間 (ミリ秒単位)。
![[REST API v2]](ngrest2.gif)
ibm-mq-md-messageId- IBM MQ によってこのメッセージに割り振られるメッセージ ID を指定します。
ibm-mq-md-correlationIdヘッダーと同様に、24 バイトを表す 48 文字の 16 進エンコード・ストリングとして表されます。 ![[MQ 9.2.5 Feb 2022]](ng925.gif)
ibm-mq-md-messageId- IBM MQ によってこのメッセージに割り振られるメッセージ ID を指定します。
ibm-mq-md-correlationIdヘッダーと同様に、これは 24 バイトを表す 48 文字の 16 進エンコード・ストリングとして表され、接頭部にストリング"ID:"が付きます。 - ibm-mq-md-persistence
- 受信メッセージの持続性を指定します。 ヘッダーは、次の値のうちのいずれかです。
- nonPersistent
- システム障害後またはキュー・マネージャー再始動後に、メッセージは存続しません。
- persistent
- メッセージはシステムの障害後、またはキュー・マネージャーの再始動後も存続します。
![[MQ 9.2.5 Feb 2022]](ng925.gif)
ibm-mq-md-優先度- メッセージ優先順位の設定を戻します。 以下に例を示します。
ibm-mq-md-priority: 3 - ibm-mq-md-replyTo
- 受信メッセージの返信先宛先を指定します。 ヘッダーの形式は、応答先キューおよびキュー・マネージャー
replyQueue@replyQmgrの標準表記を使用します。 ![[MQ 9.2.5 Feb 2022]](ng925.gif)
ibm-mq-usr- メッセージ・ユーザー定義プロパティーを戻します。 メッセージに複数のプロパティーを設定できます。この場合、 ibm-mq-usr 応答ヘッダーの 2 つ以上の個別のインスタンスが存在します。
応答本体の形式
常に実行された場合、応答本体には受信メッセージからのメッセージ本体が入ります。 エラーが発生した場合、応答本体に JSON 形式のエラー・メッセージが入ります。 どちらの応答もUTF-8エンコードされます。 詳しくは、 REST API エラー処理を参照してください。
メッセージを受信する場合は、IBM MQMQSTRおよびJMS TextMessage形式のメッセージのみがサポートされることに注意してください。 その後、同期点下ですべてのメッセージが受信され、未処理のメッセージはキューに残されます。 これらの有害メッセージを代替宛先に移動するように IBM MQ キューを構成できます。 詳しくは、 IBM MQ classes for JMS での有害メッセージの処理を参照してください。
例
以下の例では、v2 のリソース URL を使用しています。 IBM MQ のバージョンが IBM MQ 9.1.5 より前の場合は、代わりに URL を使用する必要があります。 つまり、リソース URL では、URL の例で v2 が使用されている v1 が置き換わります。
mquserを使用してmquserというユーザーにログインします。 cURL,ログイン・リクエストは以下のようになるWindows LTPA トークンは、-cフラグを使用してcookiejar.txtファイルに保管されます。curl -k "https://localhost:9443/ibmmq/rest/v2/login" -X POST
-H "Content-Type: application/json" --data "{\"username\":\"mquser\",\"password\":\"mquser\"}"
-c c:\cookiejar.txtユーザーがログインすると、さらに要求を認証するために LTPA トークンとibm-mq-rest-csrf-token HTTP ヘッダーが使用されます。 ibm-mq-rest-csrf-tokentoken_valueは、ブランクを含む任意の値にすることができます。
- 以下のWindows cURL の例では、デフォルト・オプションを使用して、キュー・マネージャー
QM1のキューQ1から次に使用可能なメッセージを除去します。curl -k "https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/queue/Q1/message" -X DELETE -b c:\cookiejar.txt -H "ibm-mq-rest-csrf-token: token-value" -H "Accept: text/plain" - 以下のWindows cURL の例では、特定の相関 ID
0000000000000000000000000000000000000000abcdabcdを持つメッセージをキュー・マネージャーQM1のキューQ1から除去します。curl -k "https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/queue/Q1/message?correlationId=0000000000000000000000000000000000000000abcdabcd" -X DELETE -b c:\cookiejar.txt -H "ibm-mq-rest-csrf-token: token-value" -H "Accept: text/plain" - 以下のWindows cURL の例では、特定の相関 ID
0000000000000000000000000000000000000000abcdabcdを持つメッセージをキュー・マネージャーQM1のキューQ1から除去し、メッセージが使用可能になるまで最大 30 秒待機します。 指定されたメッセージがキューに書き込まれずに 30 秒が経過すると、メッセージなしで DELETE 呼び出しが戻ります。curl -k "https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/queue/Q1/message?correlationId=0000000000000000000000000000000000000000abcdabcd&wait=30000" -X DELETE -b c:\cookiejar.txt -H "ibm-mq-rest-csrf-token: token-value" -H "Accept: text/plain"