Spring Batch vs {Any Scripting Language}

时间:2012-03-18 00:57:41

标签: spring-batch

我试图理解为什么人们会使用Spring Batch而不是像Ruby这样的脚本语言来运行类似批处理的作业。

我正在研究需要反复运行的东西,并认为Spring Batch听起来很有趣,因为你可以使用POJO。问题是,我已经有一个工作经理,可以运行我告诉它的任何事情,并在出现任何问题时提醒我。春季批次仍然可以用于这种情况还是没有?

感谢您的意见。

2 个答案:

答案 0 :(得分:3)

  

为什么人们会使用Spring Batch而不是像Ruby这样的脚本语言

好吧,如果Ruby拥有运行批处理作业的基础架构,它可以与Spring Batch竞争。否则你将不得不从头开始写很多东西。而且基础非常大:它不仅是定期处理,还包括异常处理,数据提供者和数据使用者的连接器。如果你觉得你可以使用Ruby编程 - 继续。否则,请阅读Spring Batch文档,了解所提供的功能如何使您的生活更轻松。

  

因为您可以使用POJO

嗯,你需要在这里更具体。特定于业务的对象(流经Spring Batch)通常可以 POJO,而Spring Batch并不关心它。但是Spring Batch类的编程方式可以很容易地集成到Spring中,因此它们可以为可以调整的部分设置setter / getter。

  

可以运行我告诉它的任何内容,并在出现任何问题时提醒我

至少从您提到的内容来看,您只有“工作管理”部分,但您的故事中没有“批处理”部分。这更棘手:从源中读取数据块,转换并将其写入目标。这包括正确的事务管理和重做块的情况处理,或者无法重新启动块,并且需要重做整个作业或跳过块。

答案 1 :(得分:0)

Sidekiq是Ruby中你可以尝试的东西。它是一个简单的队列支持的任务处理机制。它是我见过的最接近批处理以及重试失败的重试。它支持运行多个worker来处理同一队列的能力。缺点是你的工人应该是幂等的,没有国家的概念。我知道Batsir试图解决这个问题,但我自己没有尝试过。

Sidekiq - 简单易行 Spring Batch - 工作流引擎,可以进行微调,但稍微提升一点。

如果您愿意,可以使用批处理管理员签出Spring Batch,这可能会让您对Spring Batch有一个很好的概述。现在我正在尝试使用JRuby运行Spring Batch,以便我可以用Ruby编写我的worker。这是另一种选择。

这些只是我的两分钱。