Solon Cloud Gateway 开发:熟悉 Completable 响应式接口

news/2025/1/26 14:06:00/

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();}});});}
}

http://www.ppmy.cn/news/1566324.html

相关文章

2025年01月21日Github流行趋势

项目名称:dokploy 项目地址url:https://github.com/Dokploy/dokploy项目语言:TypeScript历史star数:13687今日star数:378项目维护者:Siumauricio, DJKnaeckebrot, lorenzomigliorero, 190km, DrMxrcy项目简…

【java数据结构】map和set

【java数据结构】map和set 一、Map和Set的概念以及背景1.1 概念1.2 背景1.3 模型 二、Map2.1 Map说明2.2 Map的常用方法 三、Set3.1 Set说明3.2 Set的常用方法 四、Set和Map的关系 博客最后附有整篇博客的全部代码!!! 一、Map和Set的概念以及…

绝缘栅双极性晶体管(IGBT)

以下是关于绝缘栅双极性晶体管(IGBT)的介绍: 1,gtr和mosfet的复合,结合两者的优点 2,是中大功率的电力电子设备的主导器件而mosfet是小功率电力电子设备的主导器件 3,电压驱动型器件 基本概念与结构 - 定…

99.15 金融难点通俗解释:毛利率vs营业利润率vs净利率

目录 0. 承前1. 简述:三大利润率指标对比2. 比喻:三大指标对比2.1 简单对比2.2 生动比喻2.3 区别要点 3. 实际应用3.1 选择建议 4. 总结5. 实现代码 0. 承前 如果想更加全面清晰地了解金融资产组合模型进化论的体系架构,可参考: …

MongoDB 数据库备份和恢复全攻略

在当今数据驱动的时代,数据库的稳定运行和数据安全至关重要。MongoDB 作为一款流行的 NoSQL 数据库,以其灵活的文档模型和高扩展性备受青睐。然而,无论数据库多么强大,数据丢失的风险始终存在,因此掌握 MongoDB 的备份…

c#使用log4Net配置日志文件

1.# 写一个通用类 LogHelper using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using log4net;namespace WindowsFormsApplication22 {public class LogHelper{static ILog mylog LogManager.GetLogge…

Jenkins上生成的allure report打不开怎么处理

目录 问题背景: 原因: 解决方案: Jenkins上修改配置 通过Groovy脚本在Script Console中设置和修改系统属性 步骤 验证是否清空成功 进一步的定制 也可以使用Nginx去解决 使用逆向代理服务器Nginx: 通过合理调整CSP配置&a…

【Java实现 通过Easy Excel完成对excel文本数据的读写】

Java实现 通过Easy Excel完成对excel文本数据的读写 EasyExcel 官网概述1. 准备工作1.1 添加依赖1.2 创建模型类1.3 最简单的读的监听器(参考官网) 2. 读取Excel文件2.1 核心原理2.2 基础读取2.3 读多个sheet2.4 错误处理 3. 写入Excel文件3.1 基础写入 …