Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于长时间运行作业的Spring批处理或JMS_Spring_Jakarta Ee_Jms_Spring Batch - Fatal编程技术网

用于长时间运行作业的Spring批处理或JMS

用于长时间运行作业的Spring批处理或JMS,spring,jakarta-ee,jms,spring-batch,Spring,Jakarta Ee,Jms,Spring Batch,我的问题是我必须在我的Web服务上运行很长时间的进程,现在我正在寻找一种处理结果的好方法。场景:用户通过UI执行这样一个长时间运行的流程。现在他得到的信息是他的请求被接受了,他应该稍后再回来。因此,没有必要向他显示请求的状态或类似的内容。我只是想找到一种方法来正确处理长时间运行过程的结果。由于这些进程是外部程序,我的应用程序服务器不知道它们。因此,我必须等待这些程序终止。当然,我不想为此使用EJB,因为这样它们会在没有可用结果时阻塞。相反,我想到了使用JMS或Spring批处理。有没有人遇到过同

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

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

SpringBatch相对于“仅仅”使用JMS作为异步通信通道的主要优势是事务属性,允许基础设施重试失败的作业、将作业分组等。如果不了解您的具体设置,就很难给出详细的建议


干杯,

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


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

这不是数据库查询。该程序获取一个非常大的文件,并根据这个输入生成一个文件。这将非常有用,因为我的ApplicationIn服务器不知道生成的外部进程。您有关于如何在SpringBatch中管理它的任何信息吗?但是如果这样的消息bean由于计算结果的进程被卡住而没有返回结果,会发生什么情况呢。这不也是EJB可能出现的问题吗?你的申请中也有这些问题吗?