当前位置: 首页 > 知识库问答 >
问题:

使用Mutiny算子的反应管道

单品
2023-03-14

我正在处理一个反应式quarkus后端服务,它执行以下操作。

  1. 使用与postgres交互的Hibernate反应式Panache从后端获取记录列表
  2. 使用记录的标识符,从另一个远程服务获取数据

我正在使用Mutiny来执行反应式管道。远程服务和数据库集成都以非阻塞方式单独工作。我只是需要帮助写一个连接这些的管道。例如:下面的例子

    public Uni<List<Post>> findAllBooks() {
        return Book.listAll()             // Entity returns Uni<List<Book>> succesfully.
                    .map(Collection::stream)
                    .flatMap(book -> postApiClient.getPost(book.getId())  // Reactive postApiClient returns Uni<Post> successfully.
                    .collect(toList());

我被困在处理统一包装列表,然后试图处理列表中的单个项目。要么是Uni

共有1个答案

湛光华
2023-03-14

通过编写以下管道,我设法实现了目标。

  1. 转换列表

我不担心顺序,因此使用了transformToUniAndMerge。对于那些需要维护原始列表中数据顺序的人,请使用transformToUniAndConcatenate

public Multi<String> hello() {
    return Uni.createFrom().item(List.of("hello", "Django", "Hola"))  // Creating a list of Uni as would be returned by PanacheEntity
        .onItem().transformToMulti(x -> Multi.createFrom().iterable(x))  // Transform into Multi by passing the iterable
        .onItem().transformToUniAndMerge(this::mockRemoteService);  // Invoke the non-blocking remote service which returns Uni
}

private Uni<String> mockRemoteService(String item) {
    return Uni.createFrom().item((item + " mutiny").toUpperCase());
}

 类似资料:
  • 在使用回调结构和Quarkus/Mutiny实现反应式REST GETendpoint并使用阻塞服务检查变量后,我最终使用CompletionStage/CompletableFuture API版本进行了播放; 如何从我的Reactive REST GETendpoint调用CompletionLevel/CompletableFuture API服务

  • 我有两种相互依赖的方法。 返回 ,并从mainMethod返回

  • 我通常使用getBoundingClientRect()。宽度当开发一个Swiper组件使用反应挂钩,但在一些例子getBoundingClientRect()。宽度返回0。 我在useEffect函数中使用了setTimeout,效果很好; 下面是简单的swiper代码演示: 简单swiper演示代码

  • 我有两个可用的gRPCendpoint和一个ServerInterceptor,它应该在抛出异常时拦截异常。 gRPC服务定义如下: gRPC服务使用SmallRye Mutiny Responsive来处理请求。 其他帖子解释说,应该重写onHalfClose方法,并插入try/catch块来捕获自定义异常,然后映射到StatusRuntimeException gRPC可以使用的状态。我尝试了

  • 关于Mono用法的小问题。反应管道中出现错误(new MyCustomException()) 我有一个非常简单的业务用例:使用Spring Webflow 步骤1:对第三方rest API进行HTTP调用 根据第一方rest API的响应,如果只有第一个响应符合条件,则使用map函数将响应转换为MyPojo。但如果不符合条件,则应引发自定义异常 因此,我写了以下内容: 请问正确的方法是什么? 如

  • Mutiny 是一个社交网络,使用 PHP 编写,可写文章、交友、留言、上传照片和收藏。同时可作为非常简单的项目管理,可跟踪目标、任务和 bug。