【问题标题】:Is it possible to use multiple Readers in Spring Batch?是否可以在 Spring Batch 中使用多个阅读器?
【发布时间】:2015-05-31 04:52:47
【问题描述】:

我们有一种情况,我们正在从 JMS 中读取数据(将来可能会使用 RabbitMQ)并进行处理以获取数据。然后我们使用该数据调用 Web 服务(另一种解读)。最后,我们从 Web 服务中获取数据并将其写入另一个 JMS。所以在这种情况下有 2 个读数。

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

如果我们使用了错误的方法,请纠正我们。这是我们第一次实现 Spring Batch。如果您能提供一个示例场景,我将不胜感激。

【问题讨论】:

    标签: jms rabbitmq message-queue spring-batch


    【解决方案1】:

    我认为您可能在谈论拥有多个Step。

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

    同一个“工作”绝对可以有多个“步骤”。

    【讨论】:

      【解决方案2】:

      Spring Batch 中没有内置的 Multiple Readers 概念。

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

      附带说明一下,通常当我想到有两个不同的阅读器时,这可能表明要考虑两个单独的批处理作业,如果它们在处理或写入方面相似,它们可能会重用某些组件。将您的项目拆分为两个作业似乎有点过头了,但如果您想做一些事情,例如聚合以某种数据结构接收的 JMS 消息,并改为对消息组进行单个 Web 服务调用,这可能会很有用每条消息的网络服务调用次数。

      另一方面,如果您不打算单独使用 Spring Batch 解决方案,您可能需要调查 Spring Integration。 Spring 集成可能更适合您的需求,因为它是围绕消息传递构建的,并且您正在与 JMS 管道进行写入。如果您愿意,实际上可以结合使用批处理和集成。

      【讨论】:

        猜你喜欢
        • 2019-06-04
        • 1970-01-01
        • 2017-01-15
        • 2016-02-11
        • 2018-01-16
        • 2013-09-30
        • 1970-01-01
        • 2019-05-04
        • 1970-01-01
        相关资源
        最近更新 更多