輸出通道配接器

以下範例顯示 AMQP 輸出通道配接器的可用屬性

  • Java DSL

  • Java

  • XML

@Bean
public IntegrationFlow amqpOutbound(AmqpTemplate amqpTemplate,
        MessageChannel amqpOutboundChannel) {
    return IntegrationFlow.from(amqpOutboundChannel)
            .handle(Amqp.outboundAdapter(amqpTemplate)
                        .routingKey("queue1")) // default exchange - route to queue 'queue1'
            .get();
}
@Bean
@ServiceActivator(inputChannel = "amqpOutboundChannel")
public AmqpOutboundEndpoint amqpOutbound(AmqpTemplate amqpTemplate) {
    AmqpOutboundEndpoint outbound = new AmqpOutboundEndpoint(amqpTemplate);
    outbound.setRoutingKey("queue1"); // default exchange - route to queue 'queue1'
    return outbound;
}

@Bean
public MessageChannel amqpOutboundChannel() {
    return new DirectChannel();
}
<int-amqp:outbound-channel-adapter id="outboundAmqp"             (1)
                               channel="outboundChannel"         (2)
                               amqp-template="myAmqpTemplate"    (3)
                               exchange-name=""                  (4)
                               exchange-name-expression=""       (5)
                               order="1"                         (6)
                               routing-key=""                    (7)
                               routing-key-expression=""         (8)
                               default-delivery-mode""           (9)
                               confirm-correlation-expression="" (10)
                               confirm-ack-channel=""            (11)
                               confirm-nack-channel=""           (12)
                               confirm-timeout=""                (13)
                               wait-for-confirm=""               (14)
                               return-channel=""                 (15)
                               error-message-strategy=""         (16)
                               header-mapper=""                  (17)
                               mapped-request-headers=""         (18)
                               lazy-connect="true"               (19)
                               multi-send="false"/>              (20)
1 此配接器的唯一 ID。 選填。
2 訊息應傳送至此訊息通道,以進行轉換並發布至 AMQP 交換器。 必填。
3 已設定 AMQP 範本的 Bean 參考。 選填(預設為 amqpTemplate)。
4 訊息傳送至的 AMQP 交換器名稱。 若未提供,訊息會傳送至預設的無名稱交換器。 與 'exchange-name-expression' 互斥。 選填。
5 SpEL 表達式,經評估以判斷訊息傳送至的 AMQP 交換器名稱,訊息作為根物件。 若未提供,訊息會傳送至預設的無名稱交換器。 與 'exchange-name' 互斥。 選填。
6 當註冊多個消費者時,此消費者的順序,藉此啟用負載平衡和容錯移轉。 選填(預設為 Ordered.LOWEST_PRECEDENCE [=Integer.MAX_VALUE])。
7 傳送訊息時要使用的固定路由金鑰。 預設情況下,這是空的 String。 與 'routing-key-expression' 互斥。 選填。
8 SpEL 表達式,經評估以判斷傳送訊息時要使用的路由金鑰,訊息作為根物件(例如,'payload.key')。 預設情況下,這是空的 String。 與 'routing-key' 互斥。 選填。
9 訊息的預設傳遞模式:PERSISTENTNON_PERSISTENT。 若 header-mapper 設定了傳遞模式,則會覆寫。 若 Spring Integration 訊息標頭 amqp_deliveryMode 存在,則 DefaultHeaderMapper 會設定該值。 若未提供此屬性且標頭對應器未設定,則預設值取決於 RabbitTemplate 使用的基礎 Spring AMQP MessagePropertiesConverter。 若完全未自訂,則預設值為 PERSISTENT。 選填。
10 定義關聯資料的表達式。 提供時,此設定會設定基礎 AMQP 範本以接收發布者確認。 需要專用的 RabbitTemplateCachingConnectionFactory,且 publisherConfirms 屬性設定為 true。 當收到發布者確認且提供關聯資料時,會將其寫入 confirm-ack-channelconfirm-nack-channel,取決於確認類型。 確認的有效負載是由此表達式定義的關聯資料。 訊息具有 'amqp_publishConfirm' 標頭,設定為 true (ack) 或 false (nack)。 範例:headers['myCorrelationData']payload。 版本 4.1 引入了 amqp_publishConfirmNackCause 訊息標頭。 它包含發布者確認的 'nack' 的 cause。 從版本 4.2 開始,若表達式解析為 Message<?> 實例(例如 #this),則在 ack/nack 通道上發出的訊息會基於該訊息,並新增額外的標頭。 先前,會建立一個新訊息,其中關聯資料作為其有效負載,無論類型為何。 另請參閱 發布者確認和退回的替代機制。 選填。
11 正向 (ack) 發布者確認傳送至的通道。 有效負載是由 confirm-correlation-expression 定義的關聯資料。 若表達式為 #root#this,則訊息會從原始訊息建置,且 amqp_publishConfirm 標頭設定為 true。 另請參閱 發布者確認和退回的替代機制。 選填(預設為 nullChannel)。
12 負向 (nack) 發布者確認傳送至的通道。 有效負載是由 confirm-correlation-expression 定義的關聯資料(若未設定 ErrorMessageStrategy)。 若表達式為 #root#this,則訊息會從原始訊息建置,且 amqp_publishConfirm 標頭設定為 false。 當存在 ErrorMessageStrategy 時,訊息會是 ErrorMessage,且有效負載為 NackedAmqpMessageException。 另請參閱 發布者確認和退回的替代機制。 選填(預設為 nullChannel)。
13 設定後,若在此時間(毫秒)內未收到發布者確認,配接器將合成負面確認(nack)。 待處理的確認會以此值的 50% 進行檢查,因此傳送 nack 的實際時間將介於此值的 1 倍到 1.5 倍之間。 另請參閱 發布者確認和退回的替代機制。 預設值為無(不會產生 nack)。
14 設定為 true 時,呼叫執行緒將會封鎖,等待發布者確認。 這需要設定為確認的 RabbitTemplate 以及 confirm-correlation-expression。 執行緒將封鎖最多 confirm-timeout(或預設為 5 秒)。 若發生逾時,將會擲回 MessageTimeoutException。 若啟用退回且訊息被退回,或在等待確認時發生任何其他例外狀況,則會擲回 MessageHandlingException,並帶有適當的訊息。
15 退回的訊息傳送至的通道。 提供時,基礎 AMQP 範本會設定為將無法傳遞的訊息退回給配接器。 當未設定 ErrorMessageStrategy 時,訊息會從從 AMQP 收到的資料建構,並具有以下額外標頭:amqp_returnReplyCodeamqp_returnReplyTextamqp_returnExchangeamqp_returnRoutingKey。 當存在 ErrorMessageStrategy 時,訊息會是 ErrorMessage,且有效負載為 ReturnedAmqpMessageException。 另請參閱 發布者確認和退回的替代機制。 選填。
16 ErrorMessageStrategy 實作的參考,用於在傳送退回或負面確認的訊息時建置 ErrorMessage 實例。
17 AmqpHeaderMapper 的參考,用於在傳送 AMQP 訊息時使用。 預設情況下,只有標準 AMQP 屬性(例如 contentType)會複製到 Spring Integration MessageHeaders。 任何使用者定義的標頭都不會由預設的 `DefaultAmqpHeaderMapper` 複製到訊息。 若提供 'request-header-names',則不允許使用。 選填。
18 逗號分隔的 AMQP 標頭名稱清單,要從 MessageHeaders 對應到 AMQP 訊息。 若提供 'header-mapper' 參考,則不允許使用。 此清單中的值也可以是與標頭名稱比對的簡單模式(例如 "*""thing1*, thing2""*thing1")。
19 設定為 false 時,端點會在應用程式內容初始化期間嘗試連線至代理程式。 這允許「快速失敗」偵測錯誤的設定,但若代理程式關閉,也會導致初始化失敗。 設定為 true(預設值)時,連線會在傳送第一個訊息時建立(若連線尚不存在,因為某些其他元件已建立連線)。
20 設定為 true 時,Iterable<Message<?>> 類型的有效負載將在單一 RabbitTemplate 調用範圍內,作為相同通道上的離散訊息傳送。 需要 RabbitTemplate。 當 wait-for-confirms 為 true 時,會在訊息傳送後調用 RabbitTemplate.waitForConfirmsOrDie()。 使用交易範本時,傳送將在新的交易或已啟動的交易(若存在)中執行。
return-channel

使用 return-channel 需要具有 mandatory 屬性設定為 trueRabbitTemplate,以及具有 publisherReturns 屬性設定為 trueCachingConnectionFactory。 當使用具有退回的多個輸出端點時,每個端點都需要個別的 RabbitTemplate