Quarkus 上的反应式微配置 REST 客户端块

问题描述

在 Quarkus 上,我尝试构建一个具有动态 baseUrl 的反应式微配置 REST 客户端,但到目前为止,在所有实现变体中,REST 调用订阅后都被阻止。有趣的是,非反应式实现就像一个魅力。让我们看看一些代码...

REST 客户端界面:

Worker

夸库斯测试:

package ...;

import io.smallrye.mutiny.Uni;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Response;
import java.io.InputStream;
import java.util.concurrent.CompletionStage;

import static javax.ws.rs.core.MediaType.APPLICATION_OCTET_STREAM;

@Path("")
public interface RetrievalRestApi {

  @GET
  @Produces(APPLICATION_OCTET_STREAM)
  Uni<InputStream> retrieve();

  @GET
  @Produces(APPLICATION_OCTET_STREAM)
  InputStream retrieve2(); // non-reactive,the only one that works...

  @GET
  @Produces(APPLICATION_OCTET_STREAM)
  Uni<Response> retrieve3();

  @GET
  @Produces(APPLICATION_OCTET_STREAM)
  CompletionStage<InputStream> retrieve4();
}

运行 4 个测试时,只有使用非响应式 API 的 testRetrieve2 成功。所有其他人都挂在 AssertSubscriber.await() 中。

有什么想法吗?

解决方法

问题确实与https://github.com/quarkusio/quarkus/issues/13440有关。将 Quarkus 升级到 1.12.0.Final 后,问题消失了。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...