---
schema_version: "1"
id: ec94a2fc9d706f9bc582480c7bee13895a6079f221232888c39f28ba770eaebf
title: メッセージのパブリッシュ
collection: mulesoft
version: current
locale: ja-jp
portal_url: https://docs.salesforce.com/mulesoft/current/ja-jp/amqp-connector/1.8/amqp-publish.md
canonical_url: https://docs.mulesoft.com/jp/amqp-connector/1.8/amqp-publish
source_site: docs.mulesoft.com
content_type: documentation
content_hash: 12ad3d359c877ae111509f37de85e3fee2b4fb36d21d80537069a042d5010bea
description: MuleSoft Documentation Site
release: "1.8"
latest: true
---
# メッセージのパブリッシュ

`publish`​ 操作では、新しい AMQP メッセージを作成して、指定したエクスチェンジに送信できます。その後、メッセージのコンテンツだけでなく、AMQP メッセージのすべてのヘッダー、プロパティ、エンベロープも設定できます。

## [](#エクスチェンジへのメッセージの送信)エクスチェンジへのメッセージの送信

デフォルトの形式で使用された場合、コネクタによってメッセージペイロード内のすべての内容がパブリッシュされます。

```xml
<amqp:publish config-ref="AMQP_Config" exchangeName="targetExchange"/>
```

しかし、ペイロードが正しい形式でなく、実際に変換を行う必要がある場合にはどうでしょうか? この場合は、​`publish`​ 操作の前に DataWeave トランスフォーマーを配置できますが、メッセージのペイロードが変更されるため、​`publish`​ に続く操作に影響が出ることがあります。

この不要な影響を回避するには、​`publish`​ 操作の内部にトランスフォーマーを配置します。

```xml
<amqp:publish config-ref="Amqp_Config" exchangeName="targetExchange">
	<amqp:message>
		<amqp:body>
		<![CDATA[#[%dw 2.0
			output application/json
			---
			payload.payments
		]]]></amqp:body>
	</amqp:message>
</amqp:publish>
```

これで、トランスフォーマーによってパブリッシュされるコンテンツが生成される一方で、送信中のメッセージに対する副作用は発生しません。

## [](#メッセージのルーティングキーの上書きまたは設定)メッセージのルーティングキーの上書きまたは設定

プロパティのルーティングキーを設定または上書きすることが必要になる場合があります。ルーティングキーは、AMQP メッセージのプロパティで表されます。

```xml
<amqp:publish config-ref="Amqp_Config" exchangeName="targetExchange">
	<amqp:message>
		<amqp:body>
		<![CDATA[#[%dw 2.0
			output application/json
			---
			payload.payments
		]]]></amqp:body>
	</amqp:message>
	<amqp:routing-keys >
		<amqp:routing-key value="routingKey1" />
		<amqp:routing-key value="routingKey*" />
	</amqp:routing-keys>
</amqp:publish>
```

## [](#応答宛先の宣言)応答宛先の宣言

送信するメッセージに対する非同期の応答が必要な場合は、AMQP の ​`publish`​ 操作で任意の ​`reply-to`​ 宛先を宣言できます。この宛先は、AMQP メッセージプロパティとしてメッセージのコンシューマーに渡されます。返信が送信されると予想される宛先を表します。

`reply-to`​ 宛先を宣言するには、次のようにメッセージのプロパティに追加します。

```xml
<amqp:publish config-ref="AMQP_config" exchangeName="#[vars.targetExchange]">
	<amqp:message>
		<amqp:properties replyTo="replyToQueue" />
	</amqp:message>
</amqp:publish>
```

## [](#ブローカーから確認の要求)ブローカーから確認の要求

ブローカーが publish 操作を確認する必要がある場合、​`requestBrokerConfirms`​ パラメーターを設定できます。このパラメーターを設定すると、publish 操作のチャネルが確認モードに設定され、コネクタはブローカーからの ​`basic.ack`​ を想定します。パラメーターは、グローバルパブリッシャー設定または操作レベルで設定できます。

```xml
<amqp:publish
	config-ref="AMQP_config"
	exchangeName="#[vars.targetExchange]"
	requestBrokerConfirms="true">
	<amqp:message>
		<amqp:properties replyTo="replyToQueue" />
	</amqp:message>
</amqp:publish>
```

確認が届かない場合、ブローカーが確認メッセージに同意しなかったことを示す ​`AMQP:PUBLISHING`​ エラーが発生します。

## [](#返されるメッセージの処理)返されるメッセージの処理

コネクタでは、必須および即時のパブリッシュフラグがサポートされています。

このコネクタで送信されるメッセージを配信できない場合、AMQP ブローカーは非同期でそのメッセージを返します。

AMQP Connector では、返されるこれらのメッセージを交換にディスパッチしてカスタム処理を実行できる可能性があります。

コネクタレベルで返されるメッセージを処理するエンドポイントを定義できます。例を挙げます。

```xml
<amqp:publish config-ref="AMQP_config" exchangeName="#[vars.targetExchange]" returnedMessageExchange="exchange" mandatory="true" immediate="true" />
```

## [](#publish-操作でのエクスチェンジの宣言)Publish 操作でのエクスチェンジの宣言

デフォルトでは、定義された交換が存在しないと ​`AMQP:EXCHANGE_NOT_FOUND`​ エラーで ​`publish`​ 操作に失敗します。

交換を宣言する必要がある場合、交換を宣言するためにエンティティの定義を参照するか、インラインで定義する必要があります。

```xml
<amqp:publish
	config-ref="Amqp_Config"
	exchangeName="targetExchange">
	<amqp:fallback-exchange-definition
		removalStrategy="SHUTDOWN"
		type="DIRECT"/>
</amqp:publish>
```

交換は、高レベル要素として定義することもできます。

```xml
<amqp:exchange-defintiion
	name="targetExchangeDefinition"
	removalStrategy="SHUTDOWN"
	type="DIRECT" />

<amqp:publish
	config-ref="Amqp_Config"
	exchangeName="targetExchange"
	fallbackExchangeDefinition="targetExchangeDefinition" />
```

## [](#amqp-トポグラフィの変更を回避)AMQP トポグラフィの変更を回避

`createFallbackExchange`​ グローバル設定を指定して、代替エクスチェンジの定義による AMQP トポグラフィの変更を回避できます。​[「AMQP トポグラフィの変更を回避」](https://docs.mulesoft.com/jp/amqp-connector/1.8/amqp-topography)​を参照してください。

## [](#相関-id-の伝播)相関 ID の伝播

`publish`​ 操作では、送信メッセージの ​`correlationId`​ を設定できます。

最初に、​`sendCorrelationId`​ パラメーターを使用してメッセージをパブリッシュするときに ​`correlationId`​ を送信するかどうかを設定する必要があります。このパラメーターは、​`ALWAYS`​ (常にヘッダーを送信する)、​`NEVER`​ (ヘッダーを送信しない)、または ​`AUTO`​ (デフォルト、アプリケーション設定を使用する) に設定できます。 次に、メッセージを送信するイベントの ​`correlationId`​ を使用するか、またはメッセージビルダーでカスタム ​`correlationId`​ を設定できます。

```xml
<amqp:publish
	config-ref="AMQP_config"
	sendCorrelationId="ALWAYS"
	exchangeName="#[vars.targetExchange]">
	<amqp:properties
		correlationId="#[attributes.properties.correlationId]" />
</amqp:publish>
```

## [](#関連情報)関連情報

[返信のリスン](https://docs.mulesoft.com/jp/amqp-connector/1.8/amqp-publish-consume)