DELETE

/messaging/qmgr/{qmgrName}/queue/{queueName}/messageリソースを指定した HTTP DELETE メソッドを使用して、関連するキュー・マネージャーおよびキューからメッセージを取得できます。

使用可能な次のメッセージを指定されたキュー・マネージャーおよびキューから破壊的に取得し、HTTP 応答本体でメッセージ本体を返します。 キュー・マネージャーは mqweb サーバーと同じマシン上になければなりません。 メッセージはMQSTRまたはJMS TextMessageの形式でなければならず、現在のユーザー・コンテキストを使用して受信されます。

非互換のメッセージはキューに残されて、呼び出し元には該当する状況コードが返されます。 例えば、MQSTR形式またはJMS TextMessage形式ではないメッセージなどです。

[MQ 9.2.5 Feb 2022]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]https://host:port/ibmmq/rest/v3/messaging/qmgr/{qmgrName}/queue/{queueName}/message

qmgrName
メッセージングのための接続先のキュー・マネージャーの名前を指定します。 キュー・マネージャーは mqweb サーバーと同じマシン上になければなりません。
キュー・マネージャーの名前には、大/小文字の区別があります。
キュー・マネージャー名にスラッシュ、ピリオド、または % 記号が含まれている場合は、その文字を URL エンコードする必要があります。
  • スラッシュ (/) は、%2Fとしてエンコードする必要があります。
  • パーセント記号 (%) は、%25 とエンコードする必要があります。
queueName
次のメッセージを取得するキューの名前を指定します。
キューは、ローカルであるか、またはローカル・キューを指し示す別名として定義することが必要です。
キューの名前には、大/小文字の区別があります。
キュー名にスラッシュまたは % 記号が含まれている場合は、その文字を URL エンコードする必要があります。
  • スラッシュ / は、%2Fとしてエンコードする必要があります。
  • % 記号は、%25としてエンコードする必要があります。

HTTP 接続を使用可能にすれば、HTTPS ではなく HTTP を使用できます。 HTTP を有効にする方法の詳細については HTTP HTTPSの設定」 を参照してください。

オプションの照会パラメーター

[REST API v2][REST API v1]相関Id= hexValue
HTTP メソッドが次のメッセージを対応する相関 ID と共に返すように指定します。
hexValue
照会パラメーターは、24 バイトを表す、48 文字の 16 進エンコード・ストリングとして指定する必要があります。
以下に例を示します。
../message?correlationId=414d5120514d4144455620202020202067d8bf5923582e02
[MQ 9.2.5 Feb 2022][REST API v3]correlationId=ID :hexValue または correlationId=application_ specific _value
HTTP メソッドが次のメッセージを対応する相関 ID と共に返すように指定します。
hexValue
照会パラメーターは、24 バイトを表す 48 文字の 16 進エンコード・ストリングとして指定する必要があり、その前にストリング "ID:"を付ける必要があります。
以下に例を示します。
../message?correlationId=ID:414d5120514d4144455620202020202067d8bf5923582e02
application_specific_value
照会パラメーターは、アプリケーション固有のストリングとして指定できます。
以下に例を示します。
../message?correlationId=My-Custom-CorrelId
[REST API v2][REST API v1]messageId= hex
HTTP メソッドが次のメッセージを対応するメッセージ ID と共に返すように指定します。
hexValue
照会パラメーターは、24 バイトを表す、48 文字の 16 進エンコード・ストリングとして指定する必要があります。
以下に例を示します。
../message?messageId=414d5120514d4144455620202020202067d8ce5923582f07
[MQ 9.2.5 Feb 2022][REST API v3]messageId=ID :hexValue
HTTP メソッドが次のメッセージを対応するメッセージ ID と共に返すように指定します。
hexValue
照会パラメーターは、24 バイトを表す 48 文字の 16 進エンコード・ストリングとして指定する必要があり、その前にストリング "ID:"を付ける必要があります。
以下に例を示します。
../message?messageId=ID:414d5120514d4144455620202020202067d8ce5923582f07
wait=整数
次のメッセージが使用可能になるまで HTTP メソッドが integerValue ミリ秒の間待機するように指定します。
integerValue
照会パラメーターは、ミリ秒の期間を表す整数値として指定する必要があります。 最大値は 2147483647 です。
以下に例を示します。
../message?wait=120000

要求ヘッダー

要求で以下のヘッダーを送信する必要があります。
認証
基本認証を使用している場合、このヘッダーを送信する必要があります。 詳細については 、「 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 APIadministrative REST APIの両方を使用できるようになります。

呼び出し元のセキュリティー・プリンシパルには、指定されたキューからメッセージを取得するための権限が付与されていなければなりません。
  • リソース URL の {queueName} 部分で指定されるキューは、GET に対応している必要があります。
  • [MQ Appliance][AIX、Linux、Windows]の部分によって指定されるキューについては {queueName} の部分によって指定されるキューでは、 URL、 +GET+INQ+BROWSE 権限が呼び出し元のセキュリティプリンシパルに付与されていなければならない。
  • [z/OS]の部分によって指定されるキューでは、アクセスは呼び出し元のセキュ リティプリンシパルに付与されなければならない。 {queueName}URL UPDATEの部分によって指定されるキューでは、呼び出し元のセキュリティプリンシパルに アクセスが許可されていなければならない。

[AIX、Linux、Windows] AIX®, Linux®, and Windows では、 コマンドを使用して、 リソースを使用する権限をセキュリティ・プリンシパルに付与することができます。 setmqaut IBM® MQ 詳しくは、 setmqaut (権限の付与または取り消し)を参照してください。

[z/OS] z/OS® については、 z/OS のセキュリティの設定を参照してください。

応答状況コード

200
メッセージは正常に受信されました。
204
メッセージが使用できません。
400
無効なデータが指定されました。
例えば、無効な照会パラメーターの値が指定されました。
401
認証されませんでした。
呼び出し元は mqweb サーバーに対して認証されている必要があり、1 つ以上のMQWebAdminMQWebAdminRO、またはMQWebUserロールのメンバーでなければなりません。 ibm-mq-rest-csrf-tokenヘッダーも指定する必要があります。 詳しくは、 セキュリティー要件を参照してください。
403
許可がありません。
呼び出し元は mqweb サーバーで認証を受け、有効なプリンシパルと関連付けられました。 しかし、プリンシパルが、必要なIBM MQリソースのすべてまたはサブセットに対するアクセス権限を持っていないか、またはMQWebUser役割に含まれていません。 必要なアクセス権限について詳しくは、 セキュリティー要件を参照してください。
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][REST API v1]ibm-mq-md-correlationId
受信メッセージの相関 ID を指定します。 受信したメッセージに有効な相関 ID が含まれている場合、このヘッダーが返されます。 これは 24 バイトを表す、48 文字の 16 進エンコード・ストリングとして表記されます。
以下に例を示します。
ibm-mq-md-correlationId: 414d5120514d4144455620202020202067d8bf5923582e02
[MQ 9.2.5 Feb 2022][REST API v3]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][REST API v1]ibm-mq-md-messageId
IBM MQ によってこのメッセージに割り振られるメッセージ ID を指定します。 ibm-mq-md-correlationIdヘッダーと同様に、24 バイトを表す 48 文字の 16 進エンコード・ストリングとして表されます。
以下に例を示します。
ibm-mq-md-messageId: 414d5120514d4144455620202020202067d8ce5923582f07
[MQ 9.2.5 Feb 2022][REST API v3]ibm-mq-md-messageId
IBM MQ によってこのメッセージに割り振られるメッセージ ID を指定します。 ibm-mq-md-correlationIdヘッダーと同様に、これは 24 バイトを表す 48 文字の 16 進エンコード・ストリングとして表され、接頭部にストリング"ID:"が付きます。
以下に例を示します。
ibm-mq-md-messageId: ID:414d5120514d4144455620202020202067d8ce5923582f07
ibm-mq-md-persistence
受信メッセージの持続性を指定します。 ヘッダーは、次の値のうちのいずれかです。
nonPersistent
システム障害後またはキュー・マネージャー再始動後に、メッセージは存続しません。
persistent
メッセージはシステムの障害後、またはキュー・マネージャーの再始動後も存続します。
[MQ 9.2.5 Feb 2022][REST API v3]ibm-mq-md-優先度
メッセージ優先順位の設定を戻します。 以下に例を示します。
ibm-mq-md-priority: 3
ibm-mq-md-replyTo
受信メッセージの返信先宛先を指定します。 ヘッダーの形式は、応答先キューおよびキュー・マネージャーreplyQueue@replyQmgrの標準表記を使用します。
以下に例を示します。
ibm-mq-md-replyTo: myReplyQueue@myReplyQMgr
[MQ 9.2.5 Feb 2022][REST API v3]ibm-mq-usr
メッセージ・ユーザー定義プロパティーを戻します。 メッセージに複数のプロパティーを設定できます。この場合、 ibm-mq-usr 応答ヘッダーの 2 つ以上の個別のインスタンスが存在します。
以下に例を示します。
ibm-mq-usr: myIProp;5;short
ibm-mq-usr: mySProp;”hi”;string
ibm-mq-usr: myBProp;true;boolean
プロパティーの構文は次のとおりです。
ibm-mq-usr: property_name; user_value; user_type
property_name
指定されているユーザー・プロパティーの名前。 これは有効な JMS プロパティー名でなければなりません。
user_value
プロパティーの値。
user_type
プロパティーのタイプは以下のとおりです。
  • boolean (true/false、MQBOOL)
  • byte (8 ビット整数、MQINT8)
  • short (16 ビット整数、MQINT16)
  • integer (32 ビット整数、MQINT32)
  • long (64 ビット整数、MQINT64)
  • float (32 ビット実数、MQFLOAT32)
  • double (64 ビット実数、MQFLOAT64)
  • string (引用符付きストリング)

応答本体の形式

常に実行された場合、応答本体には受信メッセージからのメッセージ本体が入ります。 エラーが発生した場合、応答本体に 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"