Solon-Rx(约2Kb)是基于 reactive-streams 封装的 RxJava 极简版(约 2Mb 左右)。目前仅一个接口 Completable,意为:可完成的发布者。
使用场景及接口:
接口 | 说明 |
---|---|
Completable | 作为返回类型 |
Completable::complete() | 构建完成发布者 |
Completable::error(cause) | 构建异常发布者 |
Completable::create((emitter)->{…}) | 构建发射器发布者 |
1、作为返回类型(主要用于过滤器)
java">@FunctionalInterface
public interface ExFilter {/*** 过滤** @param ctx 交换上下文* @param chain 过滤链*/Completable doFilter(ExContext ctx, ExFilterChain chain);
}
2、构建返回对象(即,发布者)
java">@Component
public class CloudGatewayFilterImpl implements CloudGatewayFilter {@Overridepublic Completable doFilter(ExContext ctx, ExFilterChain chain) {String token = ctx.rawHeader("TOKEN");if (token == null) {ctx.newResponse().status(401);return Completable.complete();}return chain.doFilter(ctx);}
}
3、构建可发射控制的返回对象(比如做全局异常过滤)
java">@Component(index = -99)
public class CloudGatewayFilterImpl implements CloudGatewayFilter {@Overridepublic Completable doFilter(ExContext ctx, ExFilterChain chain) {return Completable.create(emitter -> {//订阅链路过滤的chain.doFilter(ctx).subscribe(new CompletableSubscriber() {@Overridepublic void onError(Throwable e) {ctx.newResponse().status(500);emitter.onComplete();}@Overridepublic void onComplete() {emitter.onComplete();}});});}
}