Ein Service der mehrere Services kombiniert

Dieses Feature ist ab B2B 2002.2.x verfügbar.

Der MultiService ermöglicht es, mehrere ähnliche aktivierbare(1) Services zusammenzufassen (wrappen). Die Vorteile:

  • mehrere gleichartige Services mit einer Konfiguration gleichzeitig starten/stoppen
  • weniger duplizierte Konfiguration, dadurch
    • eine verbesserte Übersicht
    • eine reduzierte Fehlerquelle
    • geringerer Customizing Aufwand

Konfiguration am Beispiel

Im Folgenden wird als Beispiel angenommen, dass drei MailServices in einem MultiService zusammengefasst werden. Diese unterscheiden sich in der Adresse des angesprochenen Mailservers (Property B3P_POP3_HOST & PORT), alle anderen Eigenschaften sind identisch.

Hintergrund des Beispiels

Um das MailCrawling zu parallelisieren, wird das Postfach via Loadbalancer auf mehrere Server verteilt. Nun können mehrere Mailcrawler parallel crawlen. Ihre Konfiguration unterscheidet sich entsprechend nur minimal.

Service-Eigenschaften

Legen Sie einen neuen Service an.

Vergeben Sie eine sprechende ServiceID:

ServiceId: MailService

Als Klassenname ist folgender Wert anzugeben:

Klassenname: org.b2bbp.service.inbound.MultiService

Die weiteren Service-Eigenschaften sind so zu setzen, wie sie auch im jeweilig gewrappten Service konfiguriert werden würden. Hierbei handelt es sich im einzelnen um die folgenden Eigenschaften: Name, Typ, Channel, Richtung, Status, Erstellt von, Startup. Diese Eigenschaften sind also immer gleich für alle gewrappten Services.

Im Beispiel wird konfiguriert:

Name = MailService
Typ = MAIL
Channel = IN_NEW
Richtung = Nach System
Startup = true

Service-Properties

WRAPPED_CLASSNAME

Um zu bestimmen, welcher Service gewrapped werden soll, ist folgende Property anzulegen:

WRAPPED_CLASSNAME = org.b2bbp.services.inbound.mail.MailService

SERVICEID_SUFFIXES

Um zu bestimmen, wie viele Kopien des Service angelegt werden sollen, ist für jede Kopie ein ServiceId-Suffix zu bestimmen. Diese sind Komma-separiert in der folgenden Property anzugeben:

SERVICEID_SUFFIXES = 11,12,13

Ein Suffix kann ein String bestehend aus Zahlen und Buchstaben, ohne Sonderzeichen sein.

Tip: Falls jeder gewrappte Service genau einem Knoten zugeordnet wird, empfiehlt es sich, die entsprechenden Knotennummern als Suffix zu wählen. Dies verbessert die Übersicht.

Aus der Kombination ServiceId & Suffix ergibt sich für jeden gewrappten Service eine eigene ServiceId, in diesem Fall also MailService-11, MailService-12, MailService-13. Diese ServiceIds sind wie üblich in den GlobalProperties NODE_<X> den gewünschten Knoten zuzuordnen. Also z.B.

NODE_11 = MailService-11,<weitere ServiceIds>
NODE_12 = MailService-12,<weitere ServiceIds>
NODE_13 = MailService-13,<weitere ServiceIds>

Hinweis: Die ServiceId ohne Suffix kann nicht einem Knoten zugeordnet werden.

Gewrappte Properties

Es verbleibt noch die üblichen Properties des jeweilig gewrappten Service zu konfigurieren:

Falls eine Property je nach gewrappten Service einen anderen Wert erhalten soll, so ist das entsprechende Suffix an den Key der Property anzufügen. Im Beispiel unterscheidet sich die Property B3P_POP3_HOST, es ist also zu konfigurieren:

B3P_POP3_HOST-11 = ago-energy-1.de
B3P_POP3_HOST-12 = ago-energy-2.de
B3P_POP3_HOST-13 = ago-energy-3.de

Alle Properties, die für alle gewrappten Services identisch sind, müssen nur einmal angegeben werden und erhalten ein Wildcard Suffix am Key, z.B.:

B3P_MAILBOX2CRAWL-* = ago-energy@b2bbp.org

Advanced-Tip: Falls der Key selber kein Minus ( - ) enthält, kann das Wildcard Suffix auch weggelassen werden. Man kann also auch äquivalent angeben:

B3P_MAILBOX2CRAWL = ago-energy@b2bbp.org

Es ist möglich, sowohl scharfe als auch das allgemeine Suffix miteinander zu kombinieren. Beispiel:

B3P_POP3_PORT-11 = 8110
B3P_POP3_PORT-* = 110

Nur MailService-11 hat dann Port 8110, die anderen MailServices 12 & 13 haben den Port 110.

Anhang

(1) Ein Service ist aktivierbar, wenn er ausgeführt wird, indem er einem Knoten durch die GlobalProperty NODE_<X> zugewiesen wird und Startup=true gesetzt wird. Services, die hingegen durch eine Action angesprochen werden, gelten als passive Services. Einen Spezialfall bilden Webservices, diese werden vom MultiService nicht unterstützt.

View Me   Edit Me