java - 使用 Java 管理非常长时间的操作

标签 java rest jakarta-ee ejb jms

实际上,我有以下流程:

  1. 用户点击“大操作”按钮;
  2. 它调用 RESTful 服务;
  3. 其余服务调用 HugeOpServiceBean,它是一个 EJB;
  4. 此 EJB 将通知 JMS 队列执行 HugeOperation;
  5. 这个 HugeOperation 可以有两个或多个实现,因此,每个正在监听它的 MDBean 都会运行(这意味着它可能在另一个 .ear 中)

我想听听你们如何做或建议我让我能够获得这些 MDBeans 的“状态”。

基本上,每个 MDBean 都会运行一些对象类型列表中的一些方法,因此,计算完成的百分比应该很容易,我只是不知道如何以及哪个是我可以做出的最好的架构决策来使它易于访问在一些 RESTful 服务中。

提前致谢。

最佳答案

处理这个问题的 RESTful 方式是:

  1. 在第一次调用后向客户端返回一个 HTTP 202 状态代码“已接受”,表示请求已成功,但需要进一步处理。您还可以提供一个带有响应的 URI,客户端可以使用该 URI 来查询“作业”的状态
  2. 实现客户端可以调用以查询作业状态的端点。
  3. 操作完成后,上述 2) 中的端点将永久重定向到操作创建的主要实体的实际 URI。

关于java - 使用 Java 管理非常长时间的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14446384/

相关文章:

编程到接口(interface)的Java单例枚举?

java - 对象内存树的树查询语言?

rest - 具有日期范围的正确 REST 格式 URL

java - 纠察线中 Arquillian 未满足的依赖关系

java - "Hibernate"类映射到底代表什么?

java - hibernate部分更新对象

java - 确定 Java 赛车程序的获胜者

java - 如何删除 JTable Java 中的空行

java - spring boot Controller 可以接收纯文本吗?

java - 如何将字符串转换为对象并使用 Jackson 检索值