[MQ 9.2.0 Jul 2020]

POST

/messaging/qmgr/{qmgrName}/topic/{topicString}/messageリソースを指定した HTTP POST メソッドを使用すると、指定したキュー・マネージャー上の指定したトピックにメッセージをパブリッシュできます。

HTTP 要求本体のテキスト・ベースのメッセージを、指定されたキュー・マネージャーおよびトピックにパブリッシュします。 このキュー・マネージャーは、mqweb サーバーと同じマシンに配置する必要があり、テキスト・ベースのメッセージのみがサポートされます。 メッセージは、現在のユーザー・コンテキストを使用して MQSTR またはJMS TextMessage形式のメッセージとしてパブリッシュされ、REST API V2、およびasDestination for REST API V3 のデフォルトのメッセージ優先順位は 4 になります。

[MQ 9.2.5 Feb 2022]REST API V3 では、ユーザー定義のメッセージ・プロパティーを指定し、メッセージ優先度を含める機能を追加します。 ibm-mq-md 優先順位および ibm-mq-usr 要求ヘッダーは、 REST API V3でのみ使用可能です。 ibm-mq-md-correlationId 要求ヘッダーは、 REST API V3では異なるフォーマットになっています。 ヘッダーは、アプリケーション固有の ID にすることもできますし、エンコードされたストリングの場合は ID: 接頭部を必要とする場合もあります。 POST 要求にユーザー定義メッセージまたはアプリケーション固有の相関 ID が含まれている場合、メッセージは JMS TextMessageとしてフォーマット設定されます。

リソース URL

https://host:port/ibmmq/rest/v2/messaging/qmgr/{qmgrName}/topic/{topicString}/message

[MQ 9.2.5 Feb 2022]https://host:port/ibmmq/rest/v3/messaging/qmgr/{qmgrName}/topic/{topicString}/message

qmgrName
メッセージングのための接続先のキュー・マネージャーの名前を指定します。 キュー・マネージャーは mqweb サーバーと同じマシン上になければなりません。
キュー・マネージャーの名前には、大/小文字の区別があります。
キュー・マネージャー名にスラッシュ、ピリオド、または % 記号が含まれている場合は、その文字を URL エンコードする必要があります。
  • スラッシュは、%2Fとしてエンコードする必要があります。
  • ピリオドは、 %2Eとしてエンコードする必要があります。
  • パーセント記号は %25としてエンコードする必要があります。
topicString
メッセージをパブリッシュするトピック・ストリングを指定します。
トピック・ストリングでは大/小文字を区別します。 トピック・ストリングには、スラッシュ区切り文字で区切られた、複数のトピック・レベルを含めることができます。
トピック・ストリングに % 記号、ピリオド、または疑問符が含まれている場合、その文字を次のように URL エンコードする必要があります。
  • パーセント記号は %25としてエンコードする必要があります。
  • ピリオドは、 %2Eとしてエンコードする必要があります。
  • 疑問符は %3Fとしてエンコードする必要があります。
トピック・ストリングの先頭または末尾がスラッシュの場合は、%2Fでエンコードする必要があります。
例えば、以下のように、トピック・ストリングにパブリッシュします。
  • キュー・マネージャーMY.QMGR上のsport/footballには、以下の URL を使用します。
    https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/MY%2EQMGR/topic/sport/football/message
  • キュー・マネージャーMY.QMGR上の/sport/footballには、以下の URL を使用します。
    https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/MY%2EQMGR/topic/%2Fsport/football/message

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

要求ヘッダー

要求で以下のヘッダーを送信する必要があります。
認証
基本認証を使用している場合、このヘッダーを送信する必要があります。 詳細については 、「 REST API 」の HTTP ベーシック認証の使用」 を参照してください。
Content-Type
このヘッダーは、以下のいずれかの値で送信する必要があります。
  • text/plain;charset=utf-8
  • text/html;charset=utf-8
  • text/xml;charset=utf-8
  • application/json;charset=utf-8
  • application/xml;charset=utf-8
ibm-mq-rest-csrf-token
このヘッダーを設定する必要がありますが、その値はブランクを含む任意のものにすることができます。
要求で以下のヘッダーをオプションで送信できます。
Accept-Language
このヘッダーは、応答メッセージ本体で返される例外メッセージやエラー・メッセージに必要な言語を指定します。
ibm-mq-md-expiry
このヘッダーは、作成されるメッセージの有効期限を設定します。 メッセージの有効期限は、メッセージがキュー・マネージャーに到着した時点から始まります。 このため、ネットワーク待ち時間は無視されます。 ヘッダーは、以下のいずれかの値として指定する必要があります。
unlimited
メッセージは満了しません。
この値がデフォルト値です。
整数値
メッセージが期限切れになるまでのミリ秒数。
0 から 99999999900 の範囲に制限されます。
ibm-mq-md-persistence
このヘッダーは、作成されるメッセージの持続性を設定します。 ヘッダーは、以下のいずれかの値として指定する必要があります。
nonPersistent
システム障害後またはキュー・マネージャー再始動後に、メッセージは存続しません。
この値がデフォルト値です。
persistent
メッセージはシステムの障害後、またはキュー・マネージャーの再始動後も存続します。
[MQ 9.2.5 Feb 2022][REST API v3]ibm-mq-md-優先順位
このヘッダーは作成されたメッセージの優先順位を設定します。 ヘッダーは、以下のいずれかの値として指定する必要があります。
asDestination
このメッセージは、基礎となる IBM® MQ キュー・オブジェクトの DEFPRTY 属性に指定されている優先順位を使用します。
整数値
実際の優先順位を 0 から 9の範囲の整数として指定します。
以下に例を示します。
ibm-mq-md-priority: asDestination
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-mq-usr)
要求メッセージのユーザー定義プロパティーを設定します。 メッセージには複数のプロパティーを設定できます。 1 つの 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: myA;5;byte,myB;-10;integer
プロパティーの構文は次のとおりです。
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 (引用符付きストリング)

要求本体の形式

要求本体は、テキスト形式で UTF-8 エンコードを使用する必要があります。 特定のテキスト構造にする必要はありません。 要求本文テキストを含むMQSTR形式のメッセージが作成され、指定されたトピックにパブリッシュされます。

[MQ 9.2.5 Feb 2022][REST API v3]REST API の V3 ユーザー定義プロパティー、またはアプリケーション固有の相関 ID フィーチャーが使用されている場合は、要求本体テキストを含む JMS TextMessage 形式のメッセージが作成され、指定されたキューに書き込まれます。

詳しくは、 を参照してください。

セキュリティー要件

呼び出し元は mqweb サーバーで認証する必要があります。 MQWebAdmin役割およびMQWebAdminRO役割は、messaging REST APIには適用されません。 REST APIのセキュリティーについて詳しくは、 IBM MQ コンソールおよび REST API セキュリティーを参照してください。

mqweb サーバーに対して認証されると、ユーザーは messaging REST APIadministrative REST APIの両方を使用できるようになります。

呼び出し元のセキュリティー・プリンシパルには、指定されたトピックにメッセージをパブリッシュするための権限が付与されていなければなりません。
  • リソース URL の {topicString} 部分で指定されるトピックは、PUBLISHが有効になっている必要があります。
  • [MQ Appliance][AIX、Linux、Windows]URLの {topicString}で指定されたトピックについては、呼び出し元のセキュリティプリンシパルに +PUB の権限が付与されていなければなりません。
  • [z/OS]URLの {topicString}で指定されたトピックについては、呼び出し元のセキュリティプリンシパルに対して UPDATE アクセス権が付与されていなければなりません。

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

[z/OS] z/OS®の場合、 z/OSでのセキュリティーのセットアップを参照してください。

messaging REST APIで Advanced Message Security (AMS) を使用する場合、すべてのメッセージは、メッセージを投稿したユーザーのコンテキストではなく、mqweb サーバーのコンテキストを使用して暗号化されることに注意してください。

応答状況コード

201
メッセージは正常に作成されてパブリッシュされました。
400
無効なデータが指定されました。
例えば、無効な要求ヘッダーの値が指定されました。
401
認証されませんでした。
呼び出し元は mqweb サーバーに対して認証されている必要があり、1 つ以上のMQWebAdminMQWebAdminRO、またはMQWebUserロールのメンバーでなければなりません。 ibm-mq-rest-csrf-tokenヘッダーも指定する必要があります。 詳しくは、 セキュリティー要件を参照してください。
403
許可がありません。
呼び出し元は mqweb サーバーで認証を受け、有効なプリンシパルと関連付けられました。 しかし、プリンシパルが、必要なIBM MQリソースのすべてまたはサブセットに対するアクセス権限を持っていないか、またはMQWebUser役割に含まれていません。 必要なアクセス権について詳しくは、 セキュリティー要件を参照してください。
404
キュー・マネージャーがありません。
405
トピックでは PUBLISH が禁止されています。
415
メッセージ・ヘッダーまたはメッセージ本体のメディア・タイプがサポートされていません。
例えば、Content-Typeヘッダーが、サポートされないメディア・タイプに設定されています。
500
IBM MQからのサーバーの問題またはエラー・コード。
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 エラー処理を参照してください。

以下の例では、パスワードmquserを使用してmquserというユーザーにログインします。 cURL,ログイン・リクエストは次の'Windows例のようになる。 LTPA トークンは、-cフラグを使用してcookiejar.txtファイルに保管されます。
curl -k "https://localhost:9443/ibmmq/rest/v1/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上のトピック・ストリングmyTopicにメッセージをパブリッシュします。 メッセージには、テキスト "Hello World!" が入ります。
    curl -k "https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/topic/myTopic/message" 
    -X POST -b c:\cookiejar.txt -H "ibm-mq-rest-csrf-token: token_value" 
    -H "Content-Type: text/plain;charset=utf-8" --data "Hello World!"
  • 以下のWindows cURL の例では、有効期限が 2 分の永続メッセージをキュー・マネージャーQM1のトピック・ストリングmyTopic/thisTopicにパブリッシュします。 メッセージには、テキスト "Hello World!" が入ります。
    curl -k "https://localhost:9443/ibmmq/rest/v2/messaging/qmgr/QM1/topic/myTopic%2FthisTopic/message" 
    -X POST -b c:\cookiejar.txt -H "ibm-mq-rest-csrf-token: token_value" 
    -H "Content-Type: text/plain;charset=utf-8" -H "ibm-mq-md-persistence: persistent" 
    -H "ibm-mq-md-expiry: 120000" --data "Hello World!"