Traitement de la relance d'étapes

Utilisez le traitement de relance d'étapes pour relancer des étapes de travaux lorsque la méthode processJobStep détecte des erreurs dans un travail par lots transactionnel. Indiquez les règles de relance d'étapes dans le code xJCL.

Chaque étape d'un travail possède sa propre configuration de politique de relance d'étapes. Vous activez le traitement de relance d'étapes en spécifiant une valeur autre que zéro pour la propriété d'étape de travail com.ibm.batch.step.retry.count dans xJCL.

Vous pouvez affiner le traitement de relance d'étape en utilisant la propriété com.ibm.batch.step.retry.include.exception.class.<n> pour spécifier les erreurs pour lesquelles une relance peut être effectuée en cas d'échec d'une étape, et en utilisant la propriété com.ibm.batch.step.retry.exclude.exception.class.<n> pour spécifier les erreurs pour lesquelles aucune relance ne peut être effectuée en cas d'échec d'une étape. Les deux propriétés s'excluent mutuellement.

L'infrastructure par lots contrôle le traitement de relance d'étapes étape par étape dans la base de données d'état de travail locale. A la fin du traitement de l'étape, un message est écrit dans le journal de travail. Ce message indique le nombre de tentatives de relance de l'étape et le temps d'horloge total qu'elle a utilisé. Le format du temps d'horloge est HH:MM:SS:MMMHH correspond aux heures, MM aux minutes, SS aux secondes, et MMM aux millisecondes.

La liste suivante contient les propriétés de relance d'étapes, suivies de leur description.

com.ibm.batch.step.retry.count

Indique le nombre de fois où une étape peut être relancée en raison d'une erreur lors du traitement de l'étape pour la méthode processJobStep. Lorsque la limite est atteinte, aucune autre relance d'étapes ne peut être effectuée en cas d'erreur d'étape.

La méthode BatchJobStepInterface.processJobStep prend en charge la clause throws java.lang.Exception. Toute exception générée à partir de la méthode processJobStep peut faire l'objet d'un traitement de relance d'étapes.

La relance d'une étape équivaut à son redémarrage. La méthode BatchJobStepInterface.destroyJobStep est appelée après l'échec de l'étape. La transaction de point de contrôle est annulée avant la relance de l'étape. La méthode BatchJobStepInterface.createJobStep est appelée lorsqu'une étape est relancée. Tous les flux de données par lots associés à l'étape sont fermés, puis rouverts lors d'une nouvelle tentative.

Si une erreur se produit pour l'étape après que la limite de relances d'étape a été atteinte, l'étape échoue et le travail passe à l'état redémarrable.

Si vous enregistrez un programme d'écoute de relance avec le contexte d'étape de travail, le programme d'écoute de relance prend le contrôle de chaque exception pouvant être relancée. La méthode RetryListener.onError(Throwable t) est appelée avant le lancement de la méthode destroyJobStep par l'étape qui a échoué et avant l'annulation de la transaction de point de contrôle. La méthode RetryListener.onRetry(Throwable t) prend le contrôle lorsque l'étape est relancée, mais avant l'appel de la méthode BatchJobStepInterface.createJobStep.

L'annulation de l'enregistrement du programme d'écoute de relance se produit juste après l'appel de la méthode RetryListener.onRetry. Si vous souhaitez que l'application par lots soit à l'écoute des tentatives de relance ultérieures de l'étape, enregistrez à nouveau le programme d'écoute de relance.

Le compteur indiquant le nombre de fois où une étape peut être relancée est remis à zéro à chaque point de contrôle. Cela signifie que la limite de relance est en fait une limite par point de contrôle.

Le traitement de relance d'étapes est désactivé par défaut.

com.ibm.batch.step.retry.delay.time

Indique le délai d'attente (en millisecondes) avant la relance de l'étape. Il s'agit du délai entre l'appel de la méthode destroyJobStep par l'étape qui a échoué et l'annulation de la transaction de point de contrôle. Toutefois, ce délai commence avant l'appel de la méthode RetryListener.onRetry.

com.ibm.batch.step.retry.include.exception.class.<n>

Indique une liste d'exceptions pour lesquelles une relance peut être effectuée en cas d'échec d'une étape.

<n> est un nombre entier. Démarrez la variable à partir de 1 et incrémentez-la d'une unité pour chaque exception.

Si vous n'indiquez pas d'exception, par défaut, toutes les exceptions sont incluses dans la liste.

L'exemple suivant utilise la propriété :

<job-step name="WCGStep1">
    <classname>com.ibm.ws.batch.sample.WCGSampleBDSBatchStep</classname>
    <checkpoint-algorithm-ref name="chkpt"/>
    <results-ref name="jobsum"/>
    <props>
      <prop name="com.ibm.batch.step.retry.count" value="1" />
      <prop name="com.ibm.batch.step.retry.delay.time" value="3000" />
      <prop name="com.ibm.batch.step.retry.include.exception.class.1" value="java.sql.SQLException" />
    </props>

    ...
  </job-step>

L'étape de travail WCGStep1 tente de relancer l'exécution d'une étape de travail pour une exception SQL (Structured Query Language).

com.ibm.batch.step.retry.exclude.exception.class.<n>

Indique une liste d'exceptions pour lesquelles une relance ne peut pas être effectuée en cas d'échec d'une étape.

La variable <n> est un nombre entier. Démarrez la variable à partir de 1 et incrémentez-la d'une unité pour chaque exception.

Si vous n'indiquez pas d'exception, par défaut, aucune exception n'est exclue de la liste.

L'exemple suivant utilise la propriété :

<job-step name="WCGStep1">
    <classname>com.ibm.ws.batch.sample.WCGSampleBDSBatchStep</classname>
    <checkpoint-algorithm-ref name="chkpt"/>
    <results-ref name="jobsum"/>
    <props>
      <prop name="com.ibm.batch.step.retry.count" value="1" />
      <prop name="com.ibm.batch.step.retry.delay.time" value="3000" />
      <prop name="com.ibm.batch.step.retry.exclude.exception.class.1" value="java.sql.SQLException" />
    </props>

    ...
  </job-step>

L'étape de travail WCGStep1 ne tente pas de relancer l'exécution d'une étape de travail pour une exception SQL (Structured Query Language).

Programmes d'écoute de relance

Vous pouvez enregistrer un programme d'écoute de relance avec la méthode JobStepContext pour écouter l'exception à relancer. Le programme d'écoute de relance prend le contrôle chaque fois qu'une exception pour laquelle une relance peut être effectuée se produit et que l'étape est relancée.

Le programme d'écoute de relance peut être enregistré avec la méthode JobStepContext via la méthode addRetryListener :
 JobStepContextMgr.getContext().addRetryListener(new MyRetryListener());

Icône indiquant le type de rubrique Rubrique de référence



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rgrid_xdbatchretrysp
Nom du fichier : rgrid_xdbatchretrysp.html