是否可以在Spring Batch中使用多个读者?

时间:2015-03-26 23:43:36

标签: jms rabbitmq message-queue spring-batch

我们有一种情况,我们正在阅读JMS(将来可能会使用RabbitMQ)和获取数据的过程。然后我们使用该数据来调用Web服务(另一个阅读)。最后,我们从Web服务获取数据并将其写入另一个JMS。因此在这种情况下有2个读数。

我们已经完成了第一次阅读和处理部分。我也看到有方法可以使用MultipleWriters。但是,我们如何使用多个读者?我们是否必须在过程中包括最后阅读部分?

如果我们使用错误的方法,请纠正我们。这是我们第一次实现Spring Batch。如果您可以包含示例场景,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

我认为你可能正在谈论拥有多个Step

例如,您已经完成了在step1中所做的事情,然后您可以在step2中执行其他操作(例如另一组“操作”)。请注意,'job`将封装整个批处理过程。

对于相同的“工作”,你肯定可以有多个“步骤”。

答案 1 :(得分:0)

Spring Batch中没有内置的多个读者概念。

我认为您最好的选择是将Web服务调用作为批处理过程阶段的一部分。尽量不要将它视为一个"阅读",而是更多的"转换"。由于您已经编写了处理器,我建议您考虑将Web服务调用保留为processor chain中的独立处理器。

另一方面,通常当我想到有两个不同的阅读器时,这可能是一个标志,考虑两个单独的批处理作业,如果它们在处理或写作方面相似,可能会重复使用某些组件。为您的项目分成两个作业似乎有点矫枉过正,但在您希望执行某些数据结构中收到的聚合JMS消息等操作的情况下可能很有用,并且可以针对消息组进行单个Web服务调用每条消息的Web服务调用。

另一方面,如果您不打算单独使用Spring Batch解决方案,则可能需要调查Spring Integration。 Spring集成可能更适合您的需求,因为它是围绕消息传递构建的,您可以在JMS管道中写入和从JMS管道写入。如果你有意思,你实际上可以使用Batch和Integration的组合。