为保留源顺序的 Pub Sub 生成事件的 Spring Batch 作业
A SpringBatch job to produce events for a PubSub preserving source order
我正在考虑创建一个 SpringBatch 作业,该作业使用 table 中的行来创建事件并将事件推送到 PubSub 实现。这里的问题是事件的顺序应该与 table 中用作事件创建过程源的行的顺序相同。
在我看来,SpringBatch 并不是为这种顺序持久性而设计的,因为批处理是并行处理然后写入的。这个问题唯一丑陋但可能有效的解决方案是在 reader 中进行所有处理(因此 reader 可以读取+处理+写入 PubSub),这有助于保持内部秩序分页批次,但即使这样似乎也不能保证批次顺序,根据 the doc
知道如何使用 SpringBatch 或至少使用 SpringBoot 来实现转换 ordered rows
->ordered events
吗?提前致谢!
It seems to me now that the SpringBatch is not designed for such order perseverance, as batches are processed and then written in parallel.
这仅适用于多线程或分区步骤。默认(单线程)面向块的步骤实现以与项目 reader 相同的顺序 return 处理项目。因此,如果您按照您想要的顺序创建数据库 reader return 项目,这些项目将以相同的顺序写入您的 Pub/Sub 代理。
我正在考虑创建一个 SpringBatch 作业,该作业使用 table 中的行来创建事件并将事件推送到 PubSub 实现。这里的问题是事件的顺序应该与 table 中用作事件创建过程源的行的顺序相同。
在我看来,SpringBatch 并不是为这种顺序持久性而设计的,因为批处理是并行处理然后写入的。这个问题唯一丑陋但可能有效的解决方案是在 reader 中进行所有处理(因此 reader 可以读取+处理+写入 PubSub),这有助于保持内部秩序分页批次,但即使这样似乎也不能保证批次顺序,根据 the doc
知道如何使用 SpringBatch 或至少使用 SpringBoot 来实现转换 ordered rows
->ordered events
吗?提前致谢!
It seems to me now that the SpringBatch is not designed for such order perseverance, as batches are processed and then written in parallel.
这仅适用于多线程或分区步骤。默认(单线程)面向块的步骤实现以与项目 reader 相同的顺序 return 处理项目。因此,如果您按照您想要的顺序创建数据库 reader return 项目,这些项目将以相同的顺序写入您的 Pub/Sub 代理。