我已阅读标准(和 javadoc),但仍有一些问题。我的用例很简单:batchlet 从外部源获取数据并确认数据(意味着确认后从外部源中删除数据)。在确认数据之前,batchlet 会生成相关输出(in-menory-object),该输出将传递到下一个面向块的步骤。
问题:
1)在批处理和块步骤之间传递数据的最佳实践是什么?看来我可以通过在批处理中调用 jobContext#setTransientUserData 来做到这一点,然后在我的块步骤中,我可以通过调用 jobContext#getTransientUserData 来访问该数据。
我知道 jobContext 和 stepContext 都是以线程本地方式实现的。这里让我担心的是“瞬态”部分。如果批处理成功但我的块步骤失败会发生什么?如果重新启动作业/步骤,“TransientUserData”-数据是否仍然可用?对于我的用例,批处理只运行一次很重要。因此,即使重新启动作业或块步骤,保留成功运行批处理的输出数据也很重要 - 否则批处理必须再次保存。(我已经确认了数据并且它已经消失了 - 所以再次运行 batchlet 对我没有帮助。)
2)跟进问题在stepContext中有几个方法:getPersistentUserData和setPersistentUserData。这些方法的预期用途是什么?“持久”部分指的是什么?这些方法是否仅与分区相关?
谢谢!/丹尼尔