輸出通道配接器
以下範例顯示 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 | 訊息的預設傳遞模式:PERSISTENT 或 NON_PERSISTENT 。 若 header-mapper 設定了傳遞模式,則會覆寫。 若 Spring Integration 訊息標頭 amqp_deliveryMode 存在,則 DefaultHeaderMapper 會設定該值。 若未提供此屬性且標頭對應器未設定,則預設值取決於 RabbitTemplate 使用的基礎 Spring AMQP MessagePropertiesConverter 。 若完全未自訂,則預設值為 PERSISTENT 。 選填。 |
10 | 定義關聯資料的表達式。 提供時,此設定會設定基礎 AMQP 範本以接收發布者確認。 需要專用的 RabbitTemplate 和 CachingConnectionFactory ,且 publisherConfirms 屬性設定為 true 。 當收到發布者確認且提供關聯資料時,會將其寫入 confirm-ack-channel 或 confirm-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_returnReplyCode 、amqp_returnReplyText 、amqp_returnExchange 、amqp_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
使用 |