什么网站能免费做简历,ui设计师是什么意思,网站开发就业,网站代备案流程图首先#xff0c;我要非常感谢Spring的优秀人员#xff0c;他们花了无数时间来确保Spring Batch作业的可行性#xff0c;以及发出重新启动作业的神奇能力#xff01; 感谢您提供的这个优雅的工具集#xff0c;它使我们能够浏览大量数据集#xff0c;同时使我们在跌倒时能够… 首先我要非常感谢Spring的优秀人员他们花了无数时间来确保Spring Batch作业的可行性以及发出重新启动作业的神奇能力 感谢您提供的这个优雅的工具集它使我们能够浏览大量数据集同时使我们在跌倒时能够摆脱尘埃 在承认我还有很多东西要学习的同时我想分享一下有关可重新启动性方面的经验教训。 这篇文章将包括如何识别Spring Batch的StepJob ExecutionContext的不正确使用以及如何为Spring Batch编写良好有益的组件。 有状态 对于具有可变全局变量的bean有状态性基本上是幻想。 例如拿一张一美元的钞票。 它的值是恒定的因此将被视为无状态。 另一方面以Google等股票为例 价格波动其价值将被视为可变或有状态。 执行上下文 为了保持状态Spring使我们能够同时访问StepJob的ExecutionContext 以便我们可以处理需要跟踪和正确完成工作的信息。 批处理代码库中有状态的任何内容都会威胁到其可重新启动性的可行性。 有状态的处理器读取器写入器或批处理操作使用的任何东西都应视为处于危险之中。 从技术上讲我想任何可序列化的对象都可以随时放入ExecutionContext中但是我认为这是一种危险的思考方式。 ExecutionContext更新应以非常事务性的方式进行处理。 什么信息 我建议仅在此处保留原始/伪原始简单值。 如果您想在晚上轻松入睡我还建议仅通过ItemProcessor或使用BeforeStep或AfterStep注释的方法来编写这些值。 什么不应该发生 不应在核心业务逻辑中引入和传递ExecutionContext。 上下文值不应在步骤执行过程中进行更新。 另外您应该避免将可变的值持有者对象引入ExecutionContext因为其引用很容易破坏事务边界后面的值。 当我在代码中看到这些类型的示例时我认为它们对应用程序的可重新启动性构成威胁并拒绝证明该应用程序的可重新启动性。 通常没有一种千篇一律的方法来确保您的工作代码以确保正确处理有状态信息的方式编写。 但是我将告诉您您需要考虑以下问题 事务如何完成分布式分区多线程等 如何跟踪块进度 您的读物如何排序/分组 重新启动时需要什么信息 这是更新作业相关状态信息的一般示例 import org.springframework.batch.item.*;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;
/*This could be a reader, or a writer, or maybe a processor... you need to identify when and where it is appropriate to perform these tracking activities. Remember to think about restarts! */
Component
StepScope
public class FooComponent implements ItemStream{ // a perfectly acceptable way to read a value from an ExecutionContext from anywhere!
Value(“#stepExecutionContext[‘fooStatefulCount’]”)
long statefulCount 0; // a read count perhaps?public static final String KEY bar;
public void open(ExecutionContext cxt) throws ItemStreamException {cxt.put(KEY, statefulCount);
}
public void update(ExecutionContext cxt) throws ItemStreamException {cxt.put(KEY, statefulCount);
}
public void close() throws ItemStreamException {}
} 如果您想要更全面的示例请浏览AbstractItemCountingItemStreamItemReader中的open方法 最后的想法 对于其他开发人员我的最终建议是在编写代码时力求从根本上变得完全普通。 简单性将使您对未来有所了解随后企业主将珍惜您的礼物该应用程序基本上没有技术债务。 翻译自: https://www.javacodegeeks.com/2017/04/spring-batch-restartability.html