标识任务当前是否正在运行

当任务运行时,任务数据库记录会被锁定,直到该任务完成为止。确定任务是否处于运行状态。

关于此任务

在 V6.0.2 之前,所有任务都在单个全局事务中运行。由于每个任务都使用了落实读事务隔离,因此这种处理方法不仅防止了任务多次成功运行,也阻止了读取任务状态的所有尝试。

确定任务是否正在运行有以下两种方法:
  1. NotificationSink

    可使用 TaskInfo 对象上的 setNotificationSink 方法来对任务设置 NotificationSink EJB。然后,NotificationSink Bean 可以将任务的生命周期记录到定制表中单独的数据库记录中。这将为任务生成可从调度程序独立查询的历史记录日志。这种解决方案适用于所有版本的调度程序服务。有关详细信息,请参阅“接收调度程序通知”主题。

  2. 延迟的执行和未落实的读

    在 V6.0.2 及更高版本中,有两种行为使调度程序可以查找和检索 API 方法(如 getTask、getTaskStatus 或 findTasksByName)来查看任务的当前状态,而不会阻塞。要查看任务的当前状态(包括其未落实的运行状态),请完成以下步骤:

过程

  1. 对调度程序读方法启用未落实的读事务隔离,以防止这些方法在任务运行期间发生阻塞。要为读方法设置缺省事务隔离,请参阅“配置调度程序缺省事务隔离”主题,以了解读操作的详细信息。
    要点: 如果调度程序数据库(如 Oracle)不支持未落实的读,那么除非您使用 QOS_ATLEASTONCE 服务质量,否则可能无法确定任务是否正在运行。
  2. 使用 TaskInfo.setTaskExecutionOptions 方法上的 TaskInfo.EXECUTION_DELAYEDUPDATE 选项可以强制调度程序在任务开始运行时对任务写入 TaskStatus.RUNNING 状态。

指示主题类型的图标 任务主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsch_identify
文件名:tsch_identify.html