Java Quarkus:阻止在事件循环上运行的grpc服务方法

Java Quarkus:阻止在事件循环上运行的grpc服务方法,java,grpc,vert.x,quarkus,mutiny,Java,Grpc,Vert.x,Quarkus,Mutiny,我正在quarkus中实现一个gprc服务器(1.8.3.Final)。 我的服务是以反应式风格编写的(smallrye mutiny) 这是我的服务课 @Singleton @Blocking @Slf4j public class GrpcService extends MutinyGrpcServicesGrpc.GrpcServicesImplBase{ @Blocking public Uni<MyResponse> executeMyLogic(MyReques

我正在quarkus中实现一个gprc服务器(
1.8.3.Final
)。 我的服务是以反应式风格编写的(smallrye mutiny) 这是我的服务课

@Singleton
@Blocking
@Slf4j
public class GrpcService extends MutinyGrpcServicesGrpc.GrpcServicesImplBase{

  @Blocking
  public Uni<MyResponse> executeMyLogic(MyRequest request) {
     System.out.println("grpc thread name "+Thread.currentThread().getName());
     ...
  }
}

@Singleton
@阻塞
@Slf4j
公共类GrpcService扩展了MutinyGrpcServicesGrpc.GrpcServicesImplBase{
@阻塞
public Uni executeMyLogic(我的请求){
System.out.println(“grpc线程名称”+thread.currentThread().getName());
...
}
}
现在,写入
executeMyLogic
中的实际逻辑是位阻塞,导致vertx阻塞事件循环警告(以及一些其他错误)。 如quarkus grpc服务器指南()中所述 我用
@Blocking(io.smallrye.common.annotation.Blocking)
对该方法进行了注释

在添加此注释之前,我在sys.out上获取此日志
grpc线程名称垂直x-eventloop-thread-0
这表明该逻辑正在vertx事件循环上运行,这似乎是导致问题的原因

现在根据我的理解,在
executeMyLogic
上添加了@Blocking注释后,应该在一些工作线程上运行。 但它仍然在vertx事件循环上运行

框架似乎不尊重这个注释


如果我的理解有误,请纠正我,否则请帮助我使其工作。

因此,事实证明这是quarkus框架中的一个错误。 早些时候,它不支持@Blocking注释。 升级到
1.10.2.Final


它看起来像个虫子?你提出问题了吗?@Clement你说得对。我终于自己解决了。请检查我下面的答案。太好了!这正是我所期待的。几周前我添加了这个功能。