使用<chunk time-limit="10"...>
有一种简单的方法吗?
我可以将时间限制与我的自定义 CheckpointAlgorithm 结合使用吗?
答案 0 :(得分:1)
可能最简单的方法就像
<chunk time-limit="10" item-count="999999">
其中999,999只是一些永远不会被击中的大数字。
为了解释原因,这里有一个更通用的答案&#34;我如何使用JSR 325内置检查点?&#34;
有两种方法可以在JSR 352中配置检查点,即两个检查点策略。
这是默认设置,&#34;内置&#34;行为。
由应用程序的CheckpointAlgorithm impl控制,并通过 checkpoint-policy =&#34;自定义&#34; 在JSL中启用。
了解内置检查点策略的基本要点是它基于项目计数或时间限制,以先到者为准。
<chunk>
10项后(默认)
<chunk item-count="25">
25项后
<chunk time-limit="10">
10秒或10件物品(再次,物品数量默认值),以先到者为准。
<chunk time-limit="10" item-count="25">
25件或10秒后,以先到者为准。
<chunk time-limit="10" item-count="999999">
999,999项之后,或10秒,以先到者为准(所以除了最简单的处理之外,这实际上意味着10秒之后,如果有必要,你可以使这个数字更大)。
<chunk checkpoint-policy="custom">
通过 CheckpointAlgorithm 在您自己的应用程序代码中实现,使用方法 isReadyToCheckpoint(),以及可选的超时),并引用如下:
<chunk checkpoint-policy="custom">
<checkpoint-algorithm ref="myCustomCheckpointAlgorithm">
因此时间限制默认为&#39; 0&#39;这被定义为意味着&#34;无限时间&#34;或者&#34;不准时检查点&#34;。另一方面,项目计数默认为&#39; 10&#39;以及项目计数的类似行为&#39; 0&#39;未定义。
因此,基于一些秒数的检查点的最佳方法就是将项目数设置得足够高,以至于它并不重要,这在实际应用中通常并不难。
这是上面的例子#5。
<chunk checkpoint-policy="custom" time-limit="5">
时间限制是免费的! 您无法将自定义算法与任何&#34;项目&#34;检查点策略属性(这些属性只是被忽略)。你不能在5秒内根据我的自定义算法OR来说检查点,以先到者为准。
<chunk checkpoint-policy="custom" item-count="500">
项目计数是IGNORED! 与上一个示例相同。
有一些旧的,过时的例子漂浮在周围,例如this article也包含&#34;&#34; commit-interval&#34;和&#34;时间&#34;检查站政策。这些 NOT 已合并到最终的1.0规范中。
上述解决方案有一个不那么优雅,&#34; hack&#34;品质到它。
也许规范应该定义item-count="0"
意味着什么的行为,&#34;永远不会根据项目数&#34;检查点,这将允许更简单的解决方案。也许这应该考虑可能的1.1更新。