Queueverteilung nach Systemen

Es ist nun möglich, jedem System einen bestimmten Anteil in der Queue zuzusichern. Dann wird die Verarbeitung eines Systems nicht beeinflusst, wenn ein anderes System einen Massenlauf hat. Hierfür werden die Queueplätze auf Systemgruppen aufgeteilt. Das System wird anhand der Empfänger ILN einer eingehenden Nachricht ermittelt.

Installation

Wenn Sie diese Funktionalität aktivieren möchten, müssen Sie eine Datenbanktabelle anpassen. Hierfür gehen Sie wie folgt vor:

  1. Deaktivieren Sie alle QueueServices.
  2. Warten Sie ab, bis die Queue leer ist.
  3. Konfigurieren Sie das Customizing (weiter unten beschrieben).
  4. Fahren Sie alle Knoten runter.
  5. Ändern Sie die Tabelle. (Das Script folgt unten)
  6. Fahren Sie die Knoten wieder hoch.
  7. Aktivieren Sie die QueueServices.

Beachten Sie, dass die alte Queue-Verteilung (First-In-First-Out) nicht mehr funktioniert, wenn Sie die Tabelle angepasst haben.

Für Oracle & Postgres Datenbanken können Sie folgendes Script verwenden:

alter table B2BBP_ADM_QUEUE add systemgroup varchar(20) DEFAULT 'N/A'

Customizing

Diese Funktionalität funktioniert nicht mit QueueServices, die älter sind als QueueService3.

Um die Funktionalität zu aktivieren, muss die GlobalProperty QUEUEDISTRIBUTION_BY_SYSTEMGROUPS=true gesetzt werden.

Mit der Extension SYSTEM_CONFIGURATION werden ILNs Systemgruppen zugeordnet. Hierfür ist die Standardsyntax der Extension zu verwenden. ILNs, die in dieser Extension nicht konfiguriert wurden, werden automatisch der Gruppe NA (NotAvailable) zugeordnet.

Mit der GlobalProperty QUEUEDISTRIBUTION_BY_SYSTEMGROUPS_CLASS können Sie eine Verteilungsstrategie auswählen. Erlaubte Werte sind:

org.b2bbp.configuration.db.queue.distribution.QueueDistributionByEqualRights

org.b2bbp.configuration.db.queue.distribution.QueueDistributonByCustomerRatio

Standardmäßig wird die QueueDistributionByEqualRights verwendet. Bei N Gruppen wird jeder Gruppe 1/N der Queue zugeteilt.

Alternativ kann die QueueDistributionByCustomerRatio eingestellt werden. Bei dieser Strategie kann der Anteil jeder Gruppe manuell konfiguriert werden. Standardmäßig erhält jede Gruppe den Anteilwert von 1. In der Extension SYSTEM_CONFIGURATION

können die Anteilwerte konfiguriert werden:

<Gruppenname>_SYSTEM_RATIO=<Anteilwert>

Für die Verteilung wird das Verhältnis zwischen dem Anteilwert der jeweiligen Gruppe und der Summe aller Anteilwerte gebildet.

Falls eine Gruppe nicht alle Ihre Plätze in der Queue ausfüllt, werden die übrigen Plätze nach der gleichen Strategie auf die anderen Gruppen verteilt.

Für eine sinnvolle Verteilung muss die Anzahl der Systemgruppen kleiner sein als die Anzahl der Plätze pro Queuelauf. Die Plätze pro Queuelauf werden im Queue Service konfiguriert.

Beispiel

Beispiel mit Strategie QueueDistributionByEqualRights:

  • Es gibt 3 Gruppen.
  • Die Queue verfügt über 60 Plätze pro Lauf.
  • Jeder Gruppe werden 1/3*60=20 Plätze zugeteilt.

Beispiel mit Strategie QueueDistributonByCustomerRatio

  • Gruppe1_SYSTEM_RATIO=20
  • Gruppe2_SYSTEM_RATIO=9
  • Außerdem gibt es Gruppe NA, für diese wurde kein Wert explizit konfiguriert. Sie erhält den Defaultwert 1.
  • Die Queue verfügt über 60 Plätze pro Lauf.
  • Der Gruppe 1 werden somit 20/(20+9+1)*60=40 Plätze zugeteilt, Gruppe 2 erhält 18 Plätze und Gruppe NA erhält 2 Plätze.
View Me   Edit Me