送信メッセージの変換
Spring AMQP 1.4 は ContentTypeDelegatingMessageConverter
を導入しましたが、実際のコンバーターは受信コンテンツ型メッセージプロパティに基づいて選択されます。これは、受信エンドポイントで使用できます。
Spring Integration バージョン 4.3 では、使用するコンバーターを指定する contentType
ヘッダーを使用して、送信エンドポイントでも ContentTypeDelegatingMessageConverter
を使用できます。
次の例では、ContentTypeDelegatingMessageConverter
を設定します。デフォルトのコンバーターは SimpleMessageConverter
(Java 直列化とプレーンテキストを処理します)で、JSON コンバーターを使用します。
<amqp:outbound-channel-adapter id="withContentTypeConverter" channel="ctRequestChannel"
exchange-name="someExchange"
routing-key="someKey"
amqp-template="amqpTemplateContentTypeConverter" />
<int:channel id="ctRequestChannel"/>
<rabbit:template id="amqpTemplateContentTypeConverter"
connection-factory="connectionFactory" message-converter="ctConverter" />
<bean id="ctConverter"
class="o.s.amqp.support.converter.ContentTypeDelegatingMessageConverter">
<property name="delegates">
<map>
<entry key="application/json">
<bean class="o.s.amqp.support.converter.Jackson2JsonMessageConverter" />
</entry>
</map>
</property>
</bean>
contentType
ヘッダーを application/json
に設定してメッセージを ctRequestChannel
に送信すると、JSON コンバーターが選択されます。
これは、発信チャネルアダプターとゲートウェイの両方に適用されます。
バージョン 5.0 以降、発信メッセージの ただし、以前の動作が必要な場合があります。たとえば、JSON を含む 送信チャネルアダプターとゲートウェイ(および AMQP でバックアップされたチャネル)に バージョン 5.1.9 以降、同様の |