我有一个用例,
我想用spring batch和scheduler来实现我的用例 某个时间点。
我已阅读有关Spring批处理的内容,并了解有ItemReader
,ItemProcessor
和ItemWriter
作为块中的作业来执行活动。
我还想通过定义taskExecutor(org.springframework.core.task.SimpleAsyncTaskExecutor)
使用多线程来实现它。我已经决定采用以下方法
ItemReader
中的spring hibernate事务管理器调用其他模块中实现的DAO,从DB中读取带有查询的记录。ItemProcessor
ItemWriter
中的表,并提交一定数量的提交间隔。我是Spring批处理新手所以我想了解这是否是一个很好的解决方案,或者是否有更好的方法来实现它。关于如何维护数据库连接和交易,我也几乎没有问题。
整个批处理作业会有一个连接和事务吗?或者在某些执行点打开多个连接和事务?如何处理这个过程?
如何通过多线程有效地处理上述用例,一次处理10个或20个线程的记录?
有人可以提供一个简短的解释,以便更多地了解这个概念,或提供任何样本来了解更多?
提前致谢。
答案 0 :(得分:0)
你的方法听起来不错。
我会尽力回答你的第一个问题。
整个批处理作业会有一个连接和事务吗?或者在某些执行点打开多个连接和事务?如何处理这个过程?
您可以拥有多个数据源和多个事务管理器,但管理它将很困难,因为您必须处理Spring批处理管理器可以自行完成的许多事情。 由于大多数Spring批处理操作(如Restart,stop等)需要元数据,这些元数据通过spring批处理存储在Db中。如果您尝试使用它,那么这些操作可能无法正常工作。
我建议您在同一数据源中同时使用spring批处理表和业务特定表。 这样,您只需要一个数据源和一个事务管理器,而不必担心可能遇到的事务问题。