本节介绍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不为任何这些接口提供特殊处理; 它们只是开箱即用。源码来源

最新文章

  1. C#之反射
  2. 使用Object.create 克隆对象以及实现单继承
  3. 自定义iOS7导航栏背景,标题和返回按钮文字颜色
  4. python对象
  5. core python applications
  6. 如何在HTML中加载Flash(2种实现方法)_HTML/Xhtml_网页制作
  7. Python自动化 【第八篇】:Python基础-Socket编程进阶
  8. github pages搭建个人网站如何添加导航
  9. 图解Javascript上下文与作用域
  10. java对文件拷贝的简单操作
  11. ios deprecated 警告消除 强迫症的选择
  12. 201521123025《java程序设计》第11周学习总结
  13. Activi相关表归纳
  14. 一张有料的图片!!!附文件-图片合成器C语言实现算法
  15. Miller-Rabin判质数和Pollared-Rho因数分解
  16. 主线程中的Looper.loop()一直无限循环为什么不会造成ANR
  17. sql语法中的中的with rollup
  18. Intellij IDEA注册激活破解
  19. C#语言与变量、数据类型
  20. 23 正则表达式和re模块

热门文章

  1. spark 运行报错:java.lang.AbstractMethodError
  2. 为 JS 的字符串,添加一个 format 的功能。
  3. git使用以及对应sourceTree
  4. 11.jQuery之淡入淡出效果
  5. CSS3 @keyframes 实现匀速旋转魔方(搬运工)
  6. 初探 -1 JavaScript
  7. 这才是最完美SSD:性能满血发挥 万里挑一
  8. bootloader架构设计
  9. SecureCRT文件和文件夹显示不同颜色(像linux中那样效果)
  10. Nginx Location规则