Spring Cloud Gateway的Filter中如果有耗时操作应该如何处理?

发布时间 2023-12-14 17:59:29作者: 子非鱼焉

1,如果不处理,会大大影响吞吐量;
2,spring cloud gateway是reactive的编码风格,改造代码难度很大,很不习惯;
3,spring cloud gateway使用事件线程处理一个http请求
4,事件线程比较少(参考netty event loop),不能有耗时操作,否则影响吞吐量;
5,spring cloud gateway可以使用一个异步线程池:boundedElastic ,通过Schedulers.boundedElastic()获取
6,spring cloud gateway还可以使用一个线程池:parallel,通过Schedulers.parallel()获取,通常用于CPU密集的任务。
7,把耗时操作,提交到boundedElastic线程池处理:

yourReactiveStream
    .publishOn(Schedulers.boundedElastic())
    .doOnNext(item -> {
        // ... Blocking code or computation-intensive task
    })
.subscribe();