java - 阻止 EntityManager 操作

标签 java quarkus

我不想执行阻塞操作。

Caused by: java.lang.IllegalStateException: You have attempted to perform a blocking operation on a IO thread. This is not allowed, as blocking the IO thread will cause major performance issues with your application. If you want to perform blocking EntityManager operations make sure you are doing it from a worker thread.

有人知道如何解决这个问题吗? 我只有简单的操作。返回 10 行的单个 findAll 请求。我把 Tansactional 从不 我仍然有问题。 我正在使用带有简单实体的派头。

   @GET
   @Path("/type")
   @Produces(MediaType.APPLICATION_JSON)
   @Transactional(Transactional.TxType.NEVER)
   public Response get() {
      return AlertType.listAll();
   }
public class AlerteType extends PanacheEntityBase 
{

    @Column(name="ATY_ACTIVE")
    private String active;

    @Column(name="ATY_ID")
    @Id
    private Long oraId;

    @Column(name="ATY_TYPE")
    private String type;
}

谢谢

最佳答案

如果你想继续使用非响应式代码,你可以在方法get()上使用@Blocking注解。它将卸载工作线程(而不是一个 IO 线程)上的计算。

Quarkus 对 IO 线程非常挑剔,你不能阻止它们。如果你有类似数据库调用(或任何远程调用)的东西,那就是阻塞。所以你不能在 IO 线程中完成它。

更多信息:

关于java - 阻止 EntityManager 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60778512/

相关文章:

java - Common Lisp 中的嵌套循环

java - 关于java声明

java - Quarkus MySQL JDBC 依赖项

quarkus - 未使用 Quarkus 调用 aroundInvoke

java - Quarkus:每次测试后清理 H2 DB

java - 为什么 EclEmma 不涵盖 syncronized(MyClass.class)?

java - 在Linux 64位下使用Java实现串口工作

java - 如何在java中从数据库生成JSON对象?

java - 如何解决 Quarkus Hibernate 插入 SQLGrammerException

java - 错误 : Unable to compile C-ABI query code. 确保您的系统上安装了 native 软件开发工具链