public interface Processor extends Source, Sink { }
本节介绍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消息传递 |
@Input
和@Output
Spring Cloud Stream应用程序能够在接口中定义任意数量的输入和输出通道为@Input
和@Output
方法:spa
public interface Barista { @Input SubscribableChannel orders(); @Output MessageChannel hotDrinks(); @Output MessageChannel coldDrinks(); }
使用此接口做为参数@EnableBinding
将分别触发三个绑定的通道名称为orders
,hotDrinks
和coldDrinks
。code
@EnableBinding(Barista.class) public class CafeConfiguration { ... }
使用@Input
和@Output
注释,您能够指定频道的自定义频道名称,如如下示例所示:htm
public interface Barista { ... @Input("inboundOrders") SubscribableChannel orders(); }
在这个例子中,建立的绑定通道将被命名为inboundOrders
。blog
Source
,Sink
和Processor
为了方便寻址最多见的用例,涉及输入通道,输出通道或二者,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不为任何这些接口提供特殊处理; 它们只是开箱即用。源码来源