7

实际上,我有以下流程:

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

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

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

提前致谢。

4

2 回答 2

6

处理此问题的 RESTful 方式是:

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

由于 MDB 消费和处理是交易的,所以要么全有,要么全无。显示进度会很复杂,需要子事务来更新进度。我建议将工作分块在 EJB 中的多个 JMS 消息中,并在以后成功使用 JMS 消息时监控进度。查看企业集成模式

于 2013-01-21T20:24:47.277 回答