本文介紹了阻止EntityManager操作的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧!
問題描述
我不想執(zhí)行阻止操作。
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.
有人知道如何解決此問題嗎?
我只有簡單的手術(shù)。返回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;
}
謝謝
推薦答案
如果您想繼續(xù)使用非反應(yīng)性代碼,可以在方法get()
上使用@Blocking
注釋。它將在工作線程(而不是一個IO線程)上分流計算。
Quarkus對IO線程非常挑剔,您不能阻止它們。如果您有類似數(shù)據(jù)庫調(diào)用(或任何遠程調(diào)用)的東西,它就是阻塞的。因此您不能在IO線程中執(zhí)行此操作。
更多信息:
https://quarkus.io/guides/getting-started-reactive
https://quarkus.io/blog/resteasy-reactive-faq/
這篇關(guān)于阻止EntityManager操作的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,