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:
- Deaktivieren Sie alle QueueServices.
- Warten Sie ab, bis die Queue leer ist.
- Konfigurieren Sie das Customizing (weiter unten beschrieben).
- Fahren Sie alle Knoten runter.
- Ändern Sie die Tabelle. (Das Script folgt unten)
- Fahren Sie die Knoten wieder hoch.
- 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.