出站通道介面卡

以下示例展示了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,具體取決於確認型別。確認的負載是關聯資料,由該表示式定義。訊息具有設定為trueack)或falsenack)的“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時,呼叫執行緒將阻塞,等待發布者確認。這需要配置為confirmsRabbitTemplate以及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需要一個RabbitTemplate,其mandatory屬性設定為true,以及一個CachingConnectionFactory,其publisherReturns屬性設定為true。當多個出站端點使用返回時,每個端點都需要一個單獨的RabbitTemplate

© . This site is unofficial and not affiliated with VMware.