出站閘道器
以下列表顯示了 AMQP 出站閘道器的可能屬性
-
Java DSL
-
Java
-
XML
@Bean
public IntegrationFlow amqpOutbound(AmqpTemplate amqpTemplate) {
return f -> f.handle(Amqp.outboundGateway(amqpTemplate)
.routingKey("foo")) // default exchange - route to queue 'foo'
.get();
}
@MessagingGateway(defaultRequestChannel = "amqpOutbound.input")
public interface MyGateway {
String sendToRabbit(String data);
}
@Bean
@ServiceActivator(inputChannel = "amqpOutboundChannel")
public AmqpOutboundEndpoint amqpOutbound(AmqpTemplate amqpTemplate) {
AmqpOutboundEndpoint outbound = new AmqpOutboundEndpoint(amqpTemplate);
outbound.setExpectReply(true);
outbound.setRoutingKey("foo"); // default exchange - route to queue 'foo'
return outbound;
}
@Bean
public MessageChannel amqpOutboundChannel() {
return new DirectChannel();
}
@MessagingGateway(defaultRequestChannel = "amqpOutboundChannel")
public interface MyGateway {
String sendToRabbit(String data);
}
<int-amqp:outbound-gateway id="outboundGateway" (1)
request-channel="myRequestChannel" (2)
amqp-template="" (3)
exchange-name="" (4)
exchange-name-expression="" (5)
order="1" (6)
reply-channel="" (7)
reply-timeout="" (8)
requires-reply="" (9)
routing-key="" (10)
routing-key-expression="" (11)
default-delivery-mode"" (12)
confirm-correlation-expression="" (13)
confirm-ack-channel="" (14)
confirm-nack-channel="" (15)
confirm-timeout="" (16)
return-channel="" (17)
error-message-strategy="" (18)
lazy-connect="true" /> (19)
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 | 接收到來自 AMQP 佇列的回覆並轉換後,應將回復發送到的訊息通道。可選。 |
8 | 閘道器在將回復訊息傳送到 reply-channel 時等待的時間。這僅適用於 reply-channel 可能阻塞的情況,例如具有容量限制且當前已滿的 QueueChannel 。預設為無限大。 |
9 | 當為 true 時,如果在 AmqpTemplate 的 replyTimeout 屬性指定的時間內未收到回覆訊息,閘道器將丟擲異常。預設為 true 。 |
10 | 傳送訊息時使用的 routing-key 。預設情況下,這是一個空 String 。與 'routing-key-expression' 互斥。可選。 |
11 | 一個 SpEL 表示式,用於確定傳送訊息時使用的 routing-key ,訊息作為根物件(例如 'payload.key')。預設情況下,這是一個空 String 。與 'routing-key' 互斥。可選。 |
12 | 訊息的預設投遞模式:PERSISTENT 或 NON_PERSISTENT 。如果 header-mapper 設定了投遞模式,則會被覆蓋。如果 Spring Integration 訊息頭 amqp_deliveryMode 存在,DefaultHeaderMapper 將設定其值。如果未提供此屬性且頭對映器未設定,則預設值取決於 RabbitTemplate 使用的底層 Spring AMQP MessagePropertiesConverter 。如果未進行任何自定義,預設值為 PERSISTENT 。可選。 |
13 | 自版本 4.2 起。定義關聯資料的表示式。提供此屬性時,將配置底層 AMQP 模板以接收 publisher confirms。需要專用的 RabbitTemplate 和 CachingConnectionFactory ,其中 publisherConfirms 屬性設定為 true 。當收到 publisher confirm 並提供了關聯資料時,根據確認型別,它會被寫入到 confirm-ack-channel 或 confirm-nack-channel 。確認的 payload 是由該表示式定義的關聯資料。訊息帶有一個頭 'amqp_publishConfirm',設定為 true (ack ) 或 false (nack )。對於 nack 確認,Spring Integration 提供了額外的頭 amqp_publishConfirmNackCause 。示例:headers['myCorrelationData'] 和 payload 。如果表示式解析為一個 Message<?> 例項(例如 #this ),則在 ack /nack 通道上發出的訊息基於該訊息,並新增額外的頭。以前,無論型別如何,都會建立一個新訊息,其 payload 是關聯資料。另請參見 Publisher Confirms 和 Returns 的替代機制。可選。 |
14 | 傳送正向 (ack ) publisher confirms 的通道。payload 是由 confirm-correlation-expression 定義的關聯資料。如果表示式是 #root 或 #this ,則訊息基於原始訊息構建,並設定 amqp_publishConfirm 頭為 true 。另請參見 Publisher Confirms 和 Returns 的替代機制。可選(預設為 nullChannel )。 |
15 | 傳送負向 (nack ) publisher confirms 的通道。payload 是由 confirm-correlation-expression 定義的關聯資料(如果未配置 ErrorMessageStrategy )。如果表示式是 #root 或 #this ,則訊息基於原始訊息構建,並設定 amqp_publishConfirm 頭為 false 。如果存在 ErrorMessageStrategy ,則訊息是一個 ErrorMessage ,其 payload 為 NackedAmqpMessageException 。另請參見 Publisher Confirms 和 Returns 的替代機制。可選(預設為 nullChannel )。 |
16 | 設定此屬性後,如果在指定毫秒時間內未收到 publisher confirm,閘道器將合成一個否定確認 (nack)。待處理的 confirms 每隔此值的 50% 進行檢查,因此實際傳送 nack 的時間將在此值的 1 到 1.5 倍之間。預設值為 none(不會生成 nacks)。 |
17 | 傳送返回訊息的通道。提供此屬性後,底層 AMQP 模板會被配置為將不可投遞的訊息返回給介面卡。如果未配置 ErrorMessageStrategy ,則訊息會根據從 AMQP 接收到的資料構建,幷包含以下附加頭:amqp_returnReplyCode 、amqp_returnReplyText 、amqp_returnExchange 和 amqp_returnRoutingKey 。如果存在 ErrorMessageStrategy ,則訊息是一個 ErrorMessage ,其 payload 為 ReturnedAmqpMessageException 。另請參見 Publisher Confirms 和 Returns 的替代機制。可選。 |
18 | 用於在傳送返回或否定確認訊息時構建 ErrorMessage 例項的 ErrorMessageStrategy 實現的引用。 |
19 | 當設定為 false 時,端點在應用程式上下文初始化期間嘗試連線到代理。如果代理宕機,透過記錄錯誤訊息,這可以實現“快速失敗”檢測不良配置。當設定為 true (預設值)時,連線在傳送第一條訊息時建立(如果由於其他元件已建立而尚未建立)。 |
return-channel
使用 |
底層 AmqpTemplate 的預設 replyTimeout 是五秒。如果您需要更長的超時,必須在 template 上配置它。 |
請注意,出站介面卡和出站閘道器配置之間的唯一區別是 expectReply
屬性的設定。