什么是响应式编程
总的来说,Reactive Programming 就是编写关于如何响应事件的编程模式,这些事件包括:用户输入,数据流,系统状态,变量的变化等等。 总结一下,响应式编程通常会用在一个事件流相关的场景中,在一个事件流中,一旦触发第一个事件,后续的事件会被依次触发,就像一个Pipeline 系统,不断有输入和输出。
如何使用java进行响应式编程
使用jdk9的SubmissionPublisher
SubmissionPublisher如何使用
官网介绍:
*SubmissionPublisher是一个流。异步提交问题的发布者
*(非空)项,直到关闭为止。每一个
*当前订阅者按相同顺序接收新提交的项目
*除非遇到drop或异常。使用一个
SubmissionPublisher允许项目生成器作为兼容的<a
*href = "http://www.reactive-streams.org/">reactive-streams </>
*发布者依赖于drop处理和/或阻塞流
*控制。
* A {
@link Flow.Publisher} that asynchronously issues submitted
* (non-null) items to current subscribers until it is closed. Each
* current subscriber receives newly submitted items in the same order
* unless drops or exceptions are encountered. Using a
* SubmissionPublisher allows item generators to act as compliant <a
* href="http://www.reactive-streams.org/"> reactive-streams</a>
* Publishers relying on drop handling and/or blocking for flow
* control.
定义发布者
SubmissionPublisher<String> publisher =new SubmissionPublisher<>();
泛型为消息类型,可以使用任意类型
Recover 订阅者,用来接受事件
订阅者Subscriber Subscriber订阅Publisher的回调。
除非有请求,数据项目是不会被推送到订阅者,但可能会请求多个项目。
对于给定订阅(Subscription),调用Subscriber的方法是严格按顺序的。 应用程序可以响应订阅者上的以下回调。
1.onSubscribe
对于给定的订阅,在调用任何其他Subcriber方法之前调用此方法。
2.onError
在Publisher或Subcriber遇到不可恢复的错误时调用此方法,之后Subscription不会再调用Subscriber其他的方法。
如果Publisher遇到不允许将项目发送给Subscriber的错误,则Subscriber会收到onError消息,然后不会再收到其他消息。
3. onNext
订阅下一个项目调用此方法
3.onComplete
当已知不会再额外调用Subscriber的方法,且没有发生有错误而导致终止订阅,调用此方法。之后Subscription不会调用其它Subscriber的方法。
当知道没有更多的消息发送给它时,订阅者收到onComplete。
订阅者实现
class Recover implements Flow.Subscriber<String> {
@Override
public void onSubscribe(Flow.Subscription subscription) {
System.out.println("has message on");
}
@Override
public void