java - Reactive Mailer - IO 线程上的阻塞操作

标签 java asynchronous vert.x quarkus

使用响应式(Reactive)邮件程序,我试图坚持电子邮件是否成功。 下面是未唤醒的代码片段:

@Path("atendimentos")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class AtendimentoResource {
    @Inject
    AtendimentoHistoricoRepository atendimentoHistoricoRepository;
    @Inject
    ReactiveMailer mailer;
    @GET
    public Response findAll(@QueryParam("nome") String nome) {
    AtendimentoHistorico atendimentoHistorico = new AtendimentoHistorico();
       mailer.send(email).subscribe().with(success -> {
           atendimentoHistorico.setEmailEnviado(true);
           atendimentoHistoricoRepository.persist(atendimentoHistorico);
         }, error -> {
       });
    }
}

这里是抛出的异常:

您试图在 IO 线程上执行阻塞操作。这是不允许的,因为阻塞 IO 线程将导致应用程序出现重大性能问题。如果您想执行阻塞 EntityManager 操作,请确保您是从工作线程执行此操作。

最佳答案

如果你想阻止,你应该使用io.quarkus.mailer.Mailer而不是ReactiveMailer

@Path("atendimentos")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class AtendimentoResource {
    @Inject
    AtendimentoHistoricoRepository atendimentoHistoricoRepository;
    @Inject
    Mailer mailer;
    @GET
    public Response findAll(@QueryParam("nome") String nome) {
    AtendimentoHistorico atendimentoHistorico = new AtendimentoHistorico();
       mailer.send(email);
       atendimentoHistorico.setEmailEnviado(true);
       atendimentoHistoricoRepository.persist(atendimentoHistorico);
    }
}

关于java - Reactive Mailer - IO 线程上的阻塞操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61796710/

相关文章:

java - 如何计算时间表中的 "holes"

java - Maven3 无法从远程仓库获取最新的 Artifact SNAPSHOT 版本

node.js - Node js 中的异步请求函数

java - Vert.x Json.decodeValue 列表

http - 使用 RxJava 使用 Async Jersey HTTP Client 限制传出的 HTTP 请求

java mockito 无法创建类型

java - SQLite JDBC Connection.preparedStatement 中的 NullPointerException

ios - 具有异步闭包变量的结构函数

javascript - 游戏如何删除数据库中的对象但同时将其动画化

java - vert.x - 可能有多少个计时器