RestartMessageJob

Kurzbeschreibung

Der Service nimmt alle Messages aus den gegeben Channels, welche in den letzten 24 Stunden angekommen sind und startet diese neu. Sollte B3B_TARGET_CHANNEL nicht gesetzt sein wird der Service alle Nachrichten neu starten deren Channel nicht null oder „UNKNOWN“ ist. Falls erforderlich können nur Nachrichten mit einem vorgegebenen VS Status neugestartet werden.

Einrichtung

Um einen neuen Service der B2BBP hinzuzufügen, muss eine neuer Scheduler Service erstellt werden. Siehe dazu die Seite Einrichtung von Scheduler Services.

Eigenschaften (Context nicht überschreiben):

B3P_SCHEDULER_REGISTER_CLASSNAME

org.b2bbp.service.inbound.scheduled.RestartMessageJob

B3P_TARGET_CHANNEL

Komma separierte Liste von ChannelIDs der Channels, die überwacht werden sollen

B3P_VS_STATE

VS Status der Nachrichten z.B. ERR; SUC

B3P_EXCLUDE_CS_STATES

Nachrichten mit folgendem CS Status werden für den Neustart ignoriert.

B3P_KEEP_CHANNEL

Channel wird explizit gesetzt wenn: true

B3P_SKIP_CHANNEL_DISTRIBUTION

ChannelDistribution wird übersprungen wenn: true

Falls nicht gesetzt, wird der Wert von B3P_KEEP_CHANNEL übernommen!

B3P_CHECK_DAYS

Anzahl der zu prüfenden Tage (default: 1)

B3P_SERVICE_FETCH_MESSAGE_MAX

Maximal zu prüfende Anzahl an Nachrichten pro Lauf (default: 10000)

B3P_RETRY_COUNT

Maximale Anzahl der durchgeführten Restarts. Unendlich wenn nicht angegeben oder 0!!!

Max: 9

DEFAULT_PRIO

Queuepriorität die genutzt wird, wenn sie nicht aus dem MessageContext hinterlegt ist

MESSAGES_MINIMUM_AGE_IN_HOURS

z.B. 3.78 So alt müssen Nachrichten mindestens sein damit Sie für den Neustart berücksichtigt werden.

B3P_GROUP_FORMAT

falls auf true werden Nachrichten nach Format gruppiert neu gestartet(default:false)

B3P_FORMATS

z.B. MSCONS;UTILMD (Nachrichtenformate die neu gestartet werden sollen)

B3P_DELAYS_PER_FORMAT

z.B. 3000;1000 (Mindestalter der Nachrichten in Milisekunden pro Format)

B3P_WAITS_PER_FORMAT

z.B.10000;5000 (Zeit(in Milisekunden) die gewartet wird, nachdem alle Nachrichten eines Formates neu gestartet wurden)

B3P_EXCLUDE_BS_STATES

Mit dieser Property kann man Nachrichten mit einem bestimmten Bestätigungsstatus vom Neustart ausschließen. Hierbei kann auch eine Liste von Statuskategorien angegeben werden (also z.B. CTP;SSU).

B3P_CS_STATES_TO_MATCH

Mit dieser Property kann man konfigurieren, dass ausschließlich Nachrichten mit einem bestimmten Clearingstatus (CS)neugestartet werden. Hierbei kann auch eine Liste mehrerer CS angegeben werden (also z. B.: 001;800;900).

Es können verschiedene VS Status und CS Status angeben werden, diese sind durch ; zu trennen.

Restliche Eigenschaften müssen analog zum CRON oder DELAY Service gesetzt werden. (Beschreibung in Schulungsunterlagen)

B3P_KEEP_CHANNEL ist ein optionaler Parameter und wird normalerweise nicht gesetzt. Er sorgt dafür, dass beim Neustart der Channel immer noch der Alte ist. Dadurch ist es möglich eine Nachricht nach dem Neustarten anders auszusteuern, als im ersten Durchlauf.

Der ClearingCode neu gestarteter Nachrichten ist entweder „ARS“, falls kein B3P_RETRY_COUNT angegeben wurde oder „MRx“ wobei x die Anzahl der Startversuche sind (MR1 bedeutet also die nachricht wurde einmal vom MessageRestartService neu gestartet)

Die Priorität, mit der die Nachricht neu gestartet wird, wird aus dem MessageContext bezogen. Ist die Priorität nicht im MessageContext hinterlegt, wird der Wert aus DEFAULT_PRIO genutzt. Ist auch dieser nicht gesetzt, wird die Priorität auf „low“ gesetzt.

Um die Priorität korrekt in den MessageContext zu laden sind folgende Schritte notwendig:

  • In allen Channels, in denen die Priorität wichtig ist muss eine Action hinzugefügt werden, um die Prio aus dem MessageContext in die DB zu persistieren (Falls im Channel bereits eine Action dieser Klasse existiert, kann man die Property PERSIST_TECHNICAL entsprechend anpassen):
    • Name: PersistQueuePriority
    • Klasse: org.b2bbp.runtime.actions.internal. PersistMessageContextAttributes
    • Attribute: PERSIST_TECHNICAL=B3P_MESSAGE_PRIO (messageContext nicht überschreiben)
  • Damit die Prio beim Neustart auch wieder in den MessageContext geladen wird muss folgende GloablProperty gesetzt (bzw. erweitert) werden:
    • B3P_DYNAMIC_POPULATE=B3P_MESSAGE_PRIO

Um Nachrichten gruppiert nach BDEW Typ neu zu starten muss der Parameter B3P_GROUP_FORMAT auf true gesetzt werden. Dadurch werden die Parameter MESSAGES_MINIMUM_AGE_IN_HOURS und B3P_VS_STATE ignoriert.

Nun müssen die Parameter B3P_FORMATS, B3P_DELAYS_PER_FORMAT und B3P_WAITS_PER_FORMAT gesetzt werden. Es sind Semikolon-separierte Listen anzugeben und alle drei Listen müssen gleich viele Parameter enthalten.

Das Verhalten des Jobs ist dann wie folgt:

  1. Suche alle Nachrichten mit Format B3P_FORMATS[i](im obigen Beispiel MSCONS) mit Mindestalter B3P_DELAYS_PER_FORMAT[i](im obigen Beispiel 3000).
  2. Starte diese Nachrichten neu.
  3. Nachdem alle Nachrichten neu gestartet wurden, warte B3P_WAITS_PER_FORMAT[i](im obigen Beispiel 10000) Milisekunden.
  4. Führe die Schritte 1-3 für das nächste Format aus der Liste aus(i=i+1)(im obigen Beispiel UTILMD).

Ein spezieller Anwendungsfall dieses Service ergibt sich im Routing “REMADV Buffern”. Hier dient der Service dazu, die REMADV neuzustarten, sobald das Buffern endet.

View Me   Edit Me