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

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

聲明和綁定頻道

觸發綁定@EnableBinding

您能夠將Spring應用程序轉換爲Spring Cloud Stream應用程序,將@EnableBinding註釋應用於應用程序的配置類之一。@EnableBinding註釋自己使用@Configuration進行元註釋,並觸發Spring Cloud Stream基礎架構的配置:java

...
@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方法:spa

public interface Barista {

    @Input
    SubscribableChannel orders();

    @Output
    MessageChannel hotDrinks();

    @Output
    MessageChannel coldDrinks();
}

  使用此接口做爲參數@EnableBinding將分別觸發三個綁定的通道名稱爲ordershotDrinkscoldDrinkscode

@EnableBinding(Barista.class)
public class CafeConfiguration {

   ...
}

  

自定義頻道名稱

使用@Input@Output註釋,您能夠指定頻道的自定義頻道名稱,如如下示例所示:htm

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

  

在這個例子中,建立的綁定通道將被命名爲inboundOrdersblog

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不爲任何這些接口提供特殊處理; 它們只是開箱即用。源碼來源

相關文章
相關標籤/搜索