出站通道介面卡
以下示例展示了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,具體取決於確認型別。確認的負載是關聯資料,由該表示式定義。訊息具有設定為true(ack)或false(nack)的“amqp_publishConfirm”頭。示例: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時,呼叫執行緒將阻塞,等待發布者確認。這需要配置為confirms的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()。對於事務模板,傳送將在新的事務中執行,或者在已啟動的事務中執行(如果存在)。 |
|
返回通道
使用 |