SpringCloud 反应式编程支持
2023-11-26 16:22 更新
Spring Cloud Stream还支持使用反应式API,将传入和传出的数据作为连续的数据流进行处理。可通过spring-cloud-stream-reactive
获得对反应式API的支持,需要将其显式添加到您的项目中。
具有响应式API的编程模型是声明性的。您可以使用描述从入站数据流到出站数据流的功能转换的运算符,而不是指定每个消息的处理方式。
目前Spring Cloud Stream仅支持Reactor API。将来,我们打算支持基于反应式流的更通用的模型。
反应式编程模型还使用@StreamListener
注释来设置反应式处理程序。区别在于:
@StreamListener
批注不能指定输入或输出,因为它们作为参数提供并从方法返回值。- 该方法的参数必须用
@Input
和@Output
注释,分别指示传入和传出数据流连接到哪个输入或输出。 - 该方法的返回值(如果有)用
@Output
注释,指示应该将数据发送到的输入。
响应式编程支持需要Java 1.8。
从Spring Cloud Stream 1.1.1起(从发行版Brooklyn.SR2开始),反应式编程支持要求使用Reactor 3.0.4.RELEASE及更高版本。不支持更早的Reactor版本(包括3.0.1.RELEASE,3.0.2.RELEASE和3.0.3.RELEASE)。spring-cloud-stream-reactive
可传递地检索正确的版本,但是项目结构可以将io.projectreactor:reactor-core
的版本管理为早期版本,尤其是在使用Maven时。使用Spring Initializr和Spring Boot 1.x生成的项目就是这种情况,该项目将Reactor版本覆盖为2.0.8.RELEASE
。在这种情况下,必须确保发布了正确版本的工件。您可以通过在项目中添加对版本为3.0.4.RELEASE
或更高版本的io.projectreactor:reactor-core
的直接依赖来实现。
当前,术语“ 反应式 ”的使用是指正在使用的反应式API,而不是指执行模型是反应式的(也就是说,绑定的端点仍然使用“推”式而非“拉式”模型)。尽管通过使用Reactor提供了一些反压支持,但在将来的发行版中,我们确实打算通过对连接的中间件使用本机反应性客户端来完全支持反应性管道。
以上内容是否对您有帮助:
更多建议: