我想围绕Spring批处理我的头,虽然很多教程显示了很好的代码示例,但我觉得我错过了“spring批处理引擎”的工作原理。Spring批处理 - 这个过程在哪里运行
场景1 - 创建用户时,在外部服务处创建用户。
- Web请求
- CreateLocalUser()
- 推出工作CreateExternalUser()
CreateExternalUser()可能会失败的,因为很多的原因,所以我们希望能够重试和记录错误, Spring Batch可以为我们做什么。这也是一个与我们的本地用户创建无关的解耦过程。
工作在哪里运行?它是否会与web请求运行在同一线程中,这意味着最终用户在获取http状态200之前必须等待作业完成?
想象一下,我有一个Web服务器和一个批处理服务器。我希望所有作业都可以在批处理服务器上运行,但作业本身可以从Web服务器启动。春季批可以做到这一点?我是否需要某种类型的队列,我可以从Web服务器写入并从批处理服务器消耗,实际工作将从何处开始?
方案2 - 在巨大文件处理线,开始新的工作对于每个线在大文件
- 读取线(1.000.000线)
- 用于使用从所述输入参数的每一行开始新的作业文件。
处理1.000.000行很快,并且1.000.000个新作业将或多或少地同时启动。这些运行在哪里?他们是否对初始工作运行异步?我的服务器能够处理所有这些或多或少的同时运行。
附加问题: 是否可以根据作业输入参数查询作业。即方案1,我想在我的网页上使用Id 1234查看本地用户时显示CreateExternalUser作业状态/错误。 CreateExternalUser工作具有输入参数,用户名:1234
针对场景2的详细说明:http://stackoverflow.com/questions/31558148/spring-batch-process-lines-in-huge-file-start-new-job-for-each-line – heuts
谢谢!看这个https://github.com/spring-guides/gs-batch-processing个人读者,作家,工作和步骤是有道理的。我无法包揽头脑的是工作周围的东西,如果这是春季批次的一部分或我需要管理自己的东西。即说我有10个工作。 3需要消耗AMQP并且一直运行。 3需要每小时运行一次(例如方案2),另外4个我可以在需要时手动启动。我对Spring Batch了解的是如何定义Job的实际逻辑,而不是何时以及如何开始Job。我希望这是有道理的。 – heuts
除此之外。假设我使用Spring Batch Admin连接我的解决方案,并运行消耗AMQP的作业,每个消息都将作为管理中的作业显示出来,还是将消耗的消息显示为一项作业。 – heuts