阻止EntityManager操作 [英] blocking EntityManager operations

查看:0
本文介绍了阻止EntityManager操作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不想执行阻止操作。

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请求。我把交易交易从没有 我仍然有这个问题。 我正在使用简单实体的Panache。

   @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线程中执行此操作。

更多信息:

这篇关于阻止EntityManager操作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆