本节介绍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消息传递 |
@Input
和@Output
Spring Cloud Stream应用程序可以在接口中定义任意数量的输入和输出通道为@Input
和@Output
方法:
public interface Barista {
@Input
SubscribableChannel orders();
@Output
MessageChannel hotDrinks();
@Output
MessageChannel coldDrinks();
}
使用此接口作为参数@EnableBinding
将分别触发三个绑定的通道名称为orders
,hotDrinks
和coldDrinks
。
@EnableBinding(Barista.class)
public class CafeConfiguration {
...
}
自定义频道名称
使用@Input
和@Output
注释,您可以指定频道的自定义频道名称,如以下示例所示:
public interface Barista {
...
@Input("inboundOrders")
SubscribableChannel orders();
}
在这个例子中,创建的绑定通道将被命名为inboundOrders
。
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不为任何这些接口提供特殊处理; 它们只是开箱即用。源码来源
来源:oschina
链接:https://my.oschina.net/u/4382694/blog/4225283