Solon

solon.web.flux

v2.7.1 native </> markdown

此插件,由社区成员(阿楠同学)协助贡献

<dependency>
    <groupId>org.noear</groupId>
    <artifactId>solon.web.flux</artifactId>
</dependency>

1、描述

基础扩展插件,为 Solon Web 开发,添加响应式接口 (io.projectreactor) 、或异步支持。使用时,可引入外部的响应式能力框架(比如 VertX 的一些包)。v2.3.6 后支持

因为使用的是“io.projectreactor:reactor-core” 的接口,所以 io.projectreactor 的相关组件,比如:

  • io.projectreactor.rabbitmq:reactor-rabbitmq
  • io.projectreactor.kafka:reactor-kafka
  • 等等...

以及基于 io.projectreactor 接口构建的组件,都方便使用。其它响应式接口,比如 vert.x 的组件,简单转换后也可使用。

2、代码应用

@Controller
public class DemoController {
    @Mapping("/test1")
    public Mono<String> test1(String name) {
        return Mono.just("Hello " + name);
    }
    
    @Mapping("/test2")
    public Mono test2() {
        return Mono.create(call -> {
            throw new IllegalStateException("test");
        });
    }

    @Mapping("/test3")
    public Mono<Void> test3() {
        return Mono.empty();
    }
    
    @Mapping("/hello4")
    public Mono<String> hello4(String name) {
        return Mono.fromSupplier(() -> {
            return "Hello " + name;
        });
    }
}

提醒:使用响应式处理的函数,可能会让一些注解失效。比如:事务、缓存注解等。