![[MQ 9.2.0 Jul 2020]](ng920.gif)
POST
/messaging/qmgr/{qmgrName}/topic/{topicString}/messageリソースを指定した HTTP POST メソッドを使用すると、指定したキュー・マネージャー上の指定したトピックにメッセージをパブリッシュできます。
HTTP 要求本体のテキスト・ベースのメッセージを、指定されたキュー・マネージャーおよびトピックにパブリッシュします。 このキュー・マネージャーは、mqweb サーバーと同じマシンに配置する必要があり、テキスト・ベースのメッセージのみがサポートされます。 メッセージは、現在のユーザー・コンテキストを使用して MQSTR またはJMS
TextMessage形式のメッセージとしてパブリッシュされ、REST API V2、およびasDestination for REST API V3 のデフォルトのメッセージ優先順位は 4 になります。
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]](ng925.gif)
https://host:port/ibmmq/rest/v3/messaging/qmgr/{qmgrName}/topic/{topicString}/message
- qmgrName
- メッセージングのための接続先のキュー・マネージャーの名前を指定します。 キュー・マネージャーは mqweb サーバーと同じマシン上になければなりません。
- topicString
- メッセージをパブリッシュするトピック・ストリングを指定します。
HTTP 接続を使用可能にすれば、HTTPS ではなく HTTP を使用できます。 HTTP を有効にする方法の詳細については HTTP および HTTPS ポートの設定」 を参照してください。
要求ヘッダー
- 認証
- 基本認証を使用している場合、このヘッダーを送信する必要があります。 詳細については 、「 REST API 」の HTTP ベーシック認証の使用」 を参照してください。
- Content-Type
- このヘッダーは、以下のいずれかの値で送信する必要があります。
text/plain;charset=utf-8text/html;charset=utf-8text/xml;charset=utf-8application/json;charset=utf-8application/xml;charset=utf-8
- ibm-mq-rest-csrf-token
- このヘッダーを設定する必要がありますが、その値はブランクを含む任意のものにすることができます。
- Accept-Language
- このヘッダーは、応答メッセージ本体で返される例外メッセージやエラー・メッセージに必要な言語を指定します。
- ibm-mq-md-expiry
- このヘッダーは、作成されるメッセージの有効期限を設定します。 メッセージの有効期限は、メッセージがキュー・マネージャーに到着した時点から始まります。 このため、ネットワーク待ち時間は無視されます。 ヘッダーは、以下のいずれかの値として指定する必要があります。
- unlimited
- メッセージは満了しません。
- 整数値
- メッセージが期限切れになるまでのミリ秒数。
- ibm-mq-md-persistence
- このヘッダーは、作成されるメッセージの持続性を設定します。 ヘッダーは、以下のいずれかの値として指定する必要があります。
- nonPersistent
- システム障害後またはキュー・マネージャー再始動後に、メッセージは存続しません。
- persistent
- メッセージはシステムの障害後、またはキュー・マネージャーの再始動後も存続します。
![[MQ 9.2.5 Feb 2022]](ng925.gif)
ibm-mq-md-優先順位- このヘッダーは作成されたメッセージの優先順位を設定します。 ヘッダーは、以下のいずれかの値として指定する必要があります。
- asDestination
- このメッセージは、基礎となる IBM® MQ キュー・オブジェクトの DEFPRTY 属性に指定されている優先順位を使用します。
- 整数値
- 実際の優先順位を 0 から 9の範囲の整数として指定します。
ibm-mq-md-priority: asDestination - ibm-mq-md-replyTo
- このヘッダーは、作成されるメッセージの返信先宛先を設定します。 ヘッダーの形式は、応答先キューとオプションのキュー・マネージャーを提供する標準表記 (
replyQueue[@replyQmgr]) を使用します。 ![[MQ 9.2.5 Feb 2022]](ng925.gif)
ibm-mq-usr (IBM MQ-mq-usr)- 要求メッセージのユーザー定義プロパティーを設定します。 メッセージには複数のプロパティーを設定できます。 1 つの ibm-mq-usr 要求ヘッダーに複数のコンマ区切りのプロパティーを指定することも、 ibm-mq-usr 要求ヘッダーの 2 つ以上の個別のインスタンスを使用することもできます。
要求本体の形式
要求本体は、テキスト形式で UTF-8 エンコードを使用する必要があります。 特定のテキスト構造にする必要はありません。 要求本文テキストを含むMQSTR形式のメッセージが作成され、指定されたトピックにパブリッシュされます。
![[MQ 9.2.5 Feb 2022]](ng925.gif)
REST API の V3 ユーザー定義プロパティー、またはアプリケーション固有の相関 ID フィーチャーが使用されている場合は、要求本体テキストを含む JMS TextMessage 形式のメッセージが作成され、指定されたキューに書き込まれます。
詳しくは、 例を参照してください。
セキュリティー要件
呼び出し元は mqweb サーバーで認証する必要があります。 MQWebAdmin役割およびMQWebAdminRO役割は、messaging REST APIには適用されません。 REST APIのセキュリティーについて詳しくは、 IBM MQ コンソールおよび REST API セキュリティーを参照してください。
mqweb サーバーに対して認証されると、ユーザーは messaging REST API と administrative REST APIの両方を使用できるようになります。
- リソース URL の {topicString} 部分で指定されるトピックは、
PUBLISHが有効になっている必要があります。 ![[MQ Appliance]](ngappliance.gif)
URLの {topicString}で指定されたトピックについては、呼び出し元のセキュリティプリンシパルに +PUBの権限が付与されていなければなりません。
URLの {topicString}で指定されたトピックについては、呼び出し元のセキュリティプリンシパルに対して UPDATEアクセス権が付与されていなければなりません。
AIX®, Linux®, and Windowsでは、 setmqaut コマンドを使用して、 IBM MQ リソースを使用する権限をセキュリティー・プリンシパルに付与できます。 詳しくは、 setmqaut (権限の付与または取り消し)を参照してください。
z/OS®の場合、 z/OSでのセキュリティーのセットアップを参照してください。
messaging REST APIで Advanced Message Security (AMS) を使用する場合、すべてのメッセージは、メッセージを投稿したユーザーのコンテキストではなく、mqweb サーバーのコンテキストを使用して暗号化されることに注意してください。
応答状況コード
- 201
- メッセージは正常に作成されてパブリッシュされました。
- 400
- 無効なデータが指定されました。
- 401
- 認証されませんでした。
- 403
- 許可がありません。
- 404
- キュー・マネージャーがありません。
- 405
- トピックでは PUBLISH が禁止されています。
- 415
- メッセージ・ヘッダーまたはメッセージ本体のメディア・タイプがサポートされていません。
- 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!"