首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring批处理步骤的不同组合

Spring批处理步骤的不同组合
EN

Stack Overflow用户
提问于 2015-07-14 10:56:16
回答 1查看 1.3K关注 0票数 3

我正在从事一个项目,在该项目中,我将使用Spring和创建工作流系统。这个工作流系统应该能够从队列中读取消息,这实际上是来自客户端的作业请求,根据作业请求类型,我需要调用一些7-8系统。

每个系统从某个位置读取输入文件(通常是集中存储系统,其中所有输入文件都按照客户端提交的方式存储),对其进行处理,然后将其传递给下一个系统,最终我应该能够给客户端响应,就像所有系统成功地处理了它一样,如果任何系统处理该文件失败了,如果客户端失败,客户端应该能够从实际失败的步骤中重新启动失败的作业。

我将在Spring批处理中作为步骤添加每个系统,然后使用建模系统的特定流程,例如FTP get文件、发送JMS/SMAPI请求、接收JMS响应、返回FTP文件。等。

我的问题是:

  1. 这是正确的做法吗?
  2. 如果“是”,那么使用Spring和Spring时的性能调优考虑是什么?
  3. 由于所有系统都不会一直以相同的顺序被调用,我如何使用Spring作为潜在的Spring批处理作业来编写所有可能的组合?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-16 05:49:17

问题1:将和Spring结合在一起是个好主意.

问题2:使用Spring,您有很多选项可以扩展,因此可以提高性能。您可以并行地启动整个作业,可以并行执行步骤,也可以并行执行块.基本问题是:

  1. 瓶颈在哪里?
  2. 并行化在哪里提高了性能?

问题3:基本上,Spring不是一个工作流系统.它支持具有固定步骤顺序的作业。

选项1:您可以在自己的作业("jobSystemA“、"jobSystemB")中对每个系统建模。这样,您就可以在“集成”层中实现流程的逻辑,并以正确的顺序为每个系统启动一个新作业。

选项2:如果您有固定数量的可能流,如

代码语言:javascript
复制
Flow 1:
Step A (System A)
Step B (System B)
Step C (System C)

Flow 2:
Step A (System A)
Step C (System C)
Step B (System B)

您可以为每个可能的“流”定义一个作业,并将对特定系统作业的调用实现为"StepJob“,它调用选项1中提到的特定"jobSystem"-job;

代码语言:javascript
复制
JobFlow1
  Step1 {JobStep call jobSystemA}
  Step2 {JobStep call jobSystemB}
  Step3 {JobStep call jobSystemC}

JobFlow2
  Step1 {JobStep call jobSystemA}
  Step2 {JobStep call jobSystemC}
  Step3 {JobStep call jobSystemB}

选项3:如果您使用SpringBatch的fluent API以编程方式定义作业,则可以自由地创建一个因此在运行时定义作业的作业。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31404671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档