我如何将JSR 352块步骤定义每10秒钟(并通常使用内置检查点)



使用<chunk time-limit="10"...>有一种简单的方法?

我可以将A time-limit 与我的自定义 CheckPointAlgorithm

简短答案:

最简单的方法可能是

<chunk time-limit="10" item-count="999999">

其中999,999只是一个永远不会被击中的大数字。

背景

解释为什么,这是对"我如何使用JSR 352内置检查点?

有两种方法可以在JSR 352中配置检查点,这是两个检查点策略。

在JSL(XML)

这是默认的"内置"行为。

在Java中

由Application的CheckPointAlgorithm Ingl控制,并通过 Checkpoint-Policy =&quot ='custom' in JSl。

内置策略基于项目或时间,以"命中"为准。第一个

了解内置检查点策略的基本要点是,它基于项目计数或时间限制,以先到者为准。

示例

  1. <chunk>

    10个项目(默认)

  2. <chunk item-count="25">

    25个项目之后

  3. <chunk time-limit="10">

    10秒或10个项目(再次,项目计数默认值),以先到者为准。

  4. <chunk time-limit="10" item-count="25">

    25个项目或10秒钟后,以先到者为准。

  5. <chunk time-limit="10" item-count="999999">

    在999,999个项目或10秒之后,以先到者为准(因此,除了最简单的处理之外,这实际上意味着10秒后,您可以在必要时使此数字更大)。

    >
  6. <chunk checkpoint-policy="custom">

    通过 CheckPointAlgorithm 在您自己的应用程序代码中实现,使用方法 isreadyToCheckPoint()也可以选择超时),并引用了:

     <chunk checkpoint-policy="custom">
         <checkpoint-algorithm ref="myCustomCheckpointAlgorithm">
    

讨论

因此, time-limit 默认为'0',该定义为"无限时间"。或"请勿在时间上检查点"。另一方面, item-count 默认为'10',而'0'的项目计数的类似行为是未定义的。

因此,基于一些秒数的检查点的最佳方法只是将项目计数设置为高度,以至于无关紧要,这在现实世界中通常并不难。

这是上面的示例#5。


您无法将内置控件与您的"自定义"相结合。算法!

  1. <chunk checkpoint-policy="custom" time-limit="5"> 时间限制被忽略!

您不能将自定义算法与任何"项目"结合起来。检查点策略属性(这些属性只是忽略)。您不能根据我的自定义算法或第5秒钟(以先到者为准)说检查点。

  1. <chunk checkpoint-policy="custom" item-count="500"> 忽略了项目计数!

与上一个示例相同。

警告

周围有一些较旧的,过时的例子,例如本文还包含" commit-interval"的" commit interval"one_answers"时间"检查点策略。这些是不是并入最终1.0规格中。

结束思想

上面的解决方案的" hack"不太明确。质量。

也许规范应该定义item-count="0"表示的行为,"基于项目计数的绝不检查点",这将允许更简单的解决方案。也许应该考虑使用1.1更新。

相关内容

  • 没有找到相关文章

最新更新