Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerPublish 操作では、新しい Anypoint MQ メッセージを作成し、指定した宛先 (キュー、FIFO キュー、メッセージエクスチェンジ) に送信できます。この操作を使用して、メッセージのコンテンツと、必要なすべてのヘッダーとプロパティの両方を設定できます。
メッセージには次のパラメーターが含まれます。
body
パブリッシュされた Anypoint MQ メッセージの本文が含まれます。
properties
メッセージのプロパティである文字列のシンプルなキー - 値のマップを表します。
デフォルトの形式で使用された場合、コネクタによって受信メッセージの payload
で見つかったコンテンツが文字列としてシリアル化された Anypoint MQ メッセージの body
として、宣言された destination
にパブリッシュされます。
<anypoint-mq:publish destination="invoiceQueue" config-ref="Anypoint_MQ_config"/>
この操作では、次の出力が生成されます。
ペイロードとして送信された本文のコピー
たとえば、「Hello world」メッセージを送信する場合、結果のペイロードは「Hello world」文字列になります。
メッセージ属性に含まれるメッセージの messageId
値
たとえば、他のメッセージングシステムとの互換性の提供、またはメッセージのコンテンツタイプの通信などのために、送信メッセージのプロパティを定義できます。 Anypoint MQ は、プロパティ値で文字列と数値をサポートしています。
数値プロパティ値に基づくルーティングルールを作成し、Anypoint MQ Connector を使用してメッセージをパブリッシュする場合、Anypoint MQ Connector バージョン 3.2.0 以降にアップグレードする必要があります。 これより前のバージョンのコネクタでは、すべてのプロパティ値が文字列として送信されるため、メッセージは数値プロパティに基づくルーティングルールに一致しません。 |
これらのプロパティをメッセージで直接設定するには、Publish 操作の properties
パラメーターを使用し、DataWeave を使用してキーと値のマップを定義します。
次に例を示します。
<anypoint-mq:publish config-ref="Anypoint_MQ_Config"
destination="invoiceQueue">
<anypoint-mq:properties><![CDATA[#[output application/java ---
{
AUTH_TYPE: 'jwt',
AUTH_TOKEN: attributes.queryParams.token
}]]]>
<anypoint-mq:properties>
</anypoint-mq:publish>
Publish 操作で定義したユーザープロパティは、Anypoint MQ のメッセージの [Message Browser (メッセージブラウザー)] 詳細ペインに表示されます。
ペイロードの形式が正しくない場合、正しい形式に変換できます。
ペイロードを変換するには、Publish 操作の body
パラメーターでインライン DataWeave 変換を宣言します。
<anypoint-mq:publish config-ref="Anypoint_MQ_Config"
destination="invoiceQueue">
<anypoint-mq:body ><![CDATA[#[output application/json ---
{
customer: payload.id,
items: payload.invoice.items
}]]]>
</anypoint-mq:body>
</anypoint-mq:publish>
このケースでは、操作の結果は JSON として変換された値になります。
Anypoint MQ で一意のメッセージ ID を生成できるようにする代わりに、一意のカスタムメッセージ ID を設定できます。プロパティとしてメッセージ本文のコンテンツタイプを追加することもできます。
Anypoint MQ で新しくパブリッシュされたメッセージの一意の messageId
値を生成できるようにする代わりに、[Advanced (詳細)] タブの [Message Id (メッセージ ID)] 項目でカスタム messageId
値を設定します。
Anypoint MQ メッセージの ID は一意である必要があります。重複する ID の不要な副作用を避けるために一意のカスタム ID を選択します。 FIFO キューでは、メッセージの重複を排除できます。同じメッセージ ID が含まれる FIFO キューに複数のメッセージを送信した場合、最初に到着したメッセージが有効なメッセージとして保持されます。 詳細は、「FIFO の正確に 1 回の配信」を参照してください。
Anypoint MQ では、メッセージをパブリッシュし、deliveryDelay
パラメーターを使用してコンシューマーに表示されるまで延期する機能がサポートされています。
Publish 操作を選択します。
[Advanced (詳細)] タブをクリックします。
[Delivery Delay (配信遅延)] パラメーターを遅延する時間に設定します。
デフォルトでは、deliveryDelay
パラメーターは 0
に設定されています。これはメッセージをすぐに (遅延なしで) 配信することを示します。deliveryDelay
の最大値は 15 分です。
詳細は、「遅延したメッセージの配信」を参照してください。
[Delivery Delay Unit (配信遅延単位)] メニューから単位を選択します。
FIFO キューを使用する場合、messageGroupID
パラメーターを使用して送信メッセージにメッセージグループ ID を割り当てることができます。
Publish 操作を選択します。
[Advanced (詳細)] タブをクリックします。
[Message Group ID (メッセージグループ ID)] 項目に ID を入力します。
デフォルトでは、FIFO キューに送信されるすべてのメッセージに自動生成された同じグループ ID が割り当てられます。
詳細は、「FIFO キューとメッセージグループ」を参照してください。
メッセージグループを最大限に活用するには、各グループのメッセージ数を少なくしてより詳細なグループを定義します。
たとえば、複数のユーザーからのメッセージを処理する場合、各ユーザーのイベントの相対的な順序を維持するために、ユーザーの userId
値をメッセージグループ ID として使用します。