輸出訊息轉換
Spring AMQP 1.4 引入了 ContentTypeDelegatingMessageConverter
,其中實際的轉換器是根據傳入的內容類型訊息屬性選取的。這可以由輸入端點使用。
從 Spring Integration 4.3 版開始,您也可以在輸出端點上使用 ContentTypeDelegatingMessageConverter
,並使用 contentType
標頭指定要使用的轉換器。
以下範例設定了 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>
將訊息傳送到 ctRequestChannel
並將 contentType
標頭設定為 application/json
,會導致選取 JSON 轉換器。
這適用於輸出通道適配器和閘道。
從 5.0 版開始,新增至輸出訊息的 但是,在某些情況下,需要先前的行為 - 例如,當 現在,輸出通道適配器和閘道(以及 AMQP 支援的通道)上都有一個名為 從 5.1.9 版開始,當我們產生回覆並想要覆寫轉換器填入的標頭時,為 |