Spring Cloud Stream教程(五)編程模型


本節介紹Spring Cloud Stream的編程模型。Spring Cloud Stream提供了許多預定義的注釋,用於聲明綁定的輸入和輸出通道,以及如何收聽頻道。

聲明和綁定頻道

觸發綁定@EnableBinding

您可以將Spring應用程序轉換為Spring Cloud Stream應用程序,將@EnableBinding注釋應用於應用程序的配置類之一。@EnableBinding注釋本身使用@Configuration進行元注釋,並觸發Spring Cloud Stream基礎架構的配置:

...
@Import(...)
@Configuration
@EnableIntegration
public @interface EnableBinding {
    ...
    Class<?>[] value() default {};
}

  

@EnableBinding注釋可以將一個或多個接口類作為參數,這些接口類包含表示可綁定組件(通常是消息通道)的方法。

注意

在Spring Cloud Stream 1.0中,唯一支持的可綁定組件是Spring消息傳遞MessageChannel及其擴展名SubscribableChannelPollableChannel未來版本應該使用相同的機制將此支持擴展到其他類型的組件。在本文檔中,我們將繼續參考渠道。

@Input@Output

Spring Cloud Stream應用程序可以在接口中定義任意數量的輸入和輸出通道為@Input@Output方法:

public interface Barista {

    @Input
    SubscribableChannel orders();

    @Output
    MessageChannel hotDrinks();

    @Output
    MessageChannel coldDrinks();
}

  使用此接口作為參數@EnableBinding將分別觸發三個綁定的通道名稱為ordershotDrinkscoldDrinks

@EnableBinding(Barista.class)
public class CafeConfiguration {

   ...
}

  

自定義頻道名稱

使用@Input@Output注釋,您可以指定頻道的自定義頻道名稱,如以下示例所示:

public interface Barista {
    ...
    @Input("inboundOrders")
    SubscribableChannel orders();
}

  

在這個例子中,創建的綁定通道將被命名為inboundOrders

SourceSinkProcessor

為了方便尋址最常見的用例,涉及輸入通道,輸出通道或兩者,Spring Cloud Stream提供了開箱即用的三個預定義接口。

Source可用於具有單個出站通道的應用程序。

public interface Source {

  String OUTPUT = "output";

  @Output(Source.OUTPUT)
  MessageChannel output();

}

  Sink可用於具有單個入站通道的應用程序。

public interface Sink {

  String INPUT = "input";

  @Input(Sink.INPUT)
  SubscribableChannel input();

}

  

Processor可用於具有入站通道和出站通道的應用程序。

public interface Processor extends Source, Sink {
}

Spring Cloud Stream不為任何這些接口提供特殊處理; 它們只是開箱即用。源碼來源


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM