0

我有一个问题,我必须在我的 Web 服务上运行很长时间的运行进程,现在我正在寻找一种处理结果的好方法。场景:用户通过 UI 执行如此长时间运行的进程。现在他收到消息,他的请求已被接受,他应该稍后再回来。所以没有必要向他显示他的请求状态或类似的东西。我只是在寻找一种方法来正确处理长时间运行的过程的结果。由于进程是外部程序,我的应用程序服务器不知道它们。因此我必须等待这些程序终止。当然,我不想为此使用 EJB,因为那样它们会在没有可用结果时阻塞。相反,我想到了使用 JMS 或 Spring Batch。

4

2 回答 2

0

这实际上取决于您的外部程序可用的通信形式。JMS 是一种非常好的方法,可以立即在您的应用服务器中使用,但如果您的外部程序是一个长时间运行的数据库查询,它将结果转储到文本文件中,则它可能不是最佳选择......

Spring Batch 与“仅”使用 JMS 作为异步通信通道相比的主要优势是事务属性,允许基础架构重试失败的作业、将作业组合在一起等。在不了解您的具体设置的情况下,很难给出详细的建议。

干杯,

于 2012-10-19T10:17:20.747 回答
0

我有类似的设计要求,用户正在发送 XML 文件,我必须从中生成文档。在这种情况下使用 JMS 是有利的,因为您始终可以添加这些进程的新实例,这些实例可以并行使用和执行作业。

您可以使用计时器任务来检查状态或监控这些进程。此外,您可以在流程完成后将消息发布到 JMS 队列。

于 2012-10-19T12:07:01.133 回答