重启时如何从 RDBMS 批处理元数据表加载步骤执行上下文?

How is the step execution context loaded from RDBMS batch metadata tables on restarting?

我知道步骤执行上下文被加载到内存映射中,然后加载到 batch_step_execution_context table 的 short_context 列,当作业重新启动时,相同的 in-为我们重新启动的作业自动加载内存映射执行上下文。但是,当擦除内存映射后触发重启时(例如:应用程序重启),我知道它是从批处理元数据 RDBMS tables(准确地说,batch_step_execution_context table).我的问题是 - 由于列长度为 2500,spring 批处理截断数据并在内容中添加省略号,如果我输入的数据超过 2500 个字符怎么办?它是如何加载原始数据(不是用省略号截断的数据)?

PS:如大多数示例所示,我使用此步骤执行上下文将预期分区的标识符传递给我的读者。

请帮助我了解框架中是如何处理的。 谢谢

执行上下文首先从完整版本的上下文反序列化,参见here。如果您使用持久作业存储库并重新启动相同的作业实例,则默认情况下,分区步骤的重新启动元数据应该 saved/loaded 自动。

仔细观察后发现,Spring批处理足够智能,如果内容长度不足,可以将完整的内容放入batch_step_execution_contexttable的serialized_context列超过 2500 个字符。如果内存中的映射被清除,它们将从 short_contextserialized_context 列中恢复。