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

  • 相关阅读:
    Win10系列:C#应用控件进阶9
    Win10系列:C#应用控件进阶6
    Win10系列:C#应用控件进阶7
    Win10系列:C#应用控件进阶5
    Win10系列:C#应用控件进阶4
    max_element()函数和min_element()函数
    typename的一些用法和注意问题
    std中list作为常量传参时一个迭代器错误
    C++ STL 中list是双向循环链表中循环可以实现什么功能?
    C++中list的erase()函数问题
  • 原文地址:https://www.cnblogs.com/allalongx/p/8404160.html
Copyright © 2020-2023  润新知