MIT DATEN MEHR BEWEGEN.

Funktionsbeschreibung und Anwendung

Mit dem Router-Block können einlaufende Nachrichten bedingungsbezogen in bestimmte Processing-Blöcke weitergeleitet werden.

Hierfür gilt:

  • Jede Bedingung muss einen booleschen Zustand zurückgeben.

  • Jede Bedingung, die keinen booleschen Zustand zurückgibt, ist automatisch "false".

  • Sind alle Bedingungen einer Route erfüllt, wird die Nachricht an alle mit dem Block verbundenen Nchfolgerblöcke weitergeleitet.

  • Es werden immer alle konfigurierten Routes überprüft.

  • Wenn keine Route erfüllt wird, wird die Nachricht das defaultOutputTopic des stream processor weitergeleitet.

Folgende Ausdrücke sind in den Bedingungen zulässig:

  • Regular Expression

    • Syntax: RegEx(<value>,'<pattern>')

    • Hochkomma (''): Für Value kann ein statischer Wert eingetragen werden

    • Ohne Hochkomma (''): Value aus Parametern (Header & Body) wird geholt.

  • alle Ausdrücke, die auch im Expression Evaluator Block angewendet werden können

Der Zugriff auf Nachrichteninhalte, wie die Eigenschaften des Headers und des Bodys, kann über die Bedingungen umgesetzt werden. Dies funktioniert über den Prefix header_ oder body_ innerhalb der Bedingung.

In der folgenden Tabelle werden die Konfigurationsparameter erläutert. Die Route-Blöcke enthalten die Routes mit ihren Bedingungen (conditions). Werden mehrere Bedingungen angegeben, so werden diese per Und-Logik verbunden. Das Ergebnis einer Bedingung muss immer einen boolschen Wert ergeben.

Table 1. Konfigurationsparameter Router-Block
Parameter Beschreibung

Name

Name der Blockinstanz

Route Name

Name des Route-Blocks. Wurden mehrere Route-Blöcke angelegt, erscheinen diese als wählbare Reiter unter der Eingabezeile.

Conditions - Name

Name für die jeweilige Bedingung.

Conditions - Value

String, der die Logik für die Bewertung der keys enthält.

Beispielkonfiguration Router-Block

Die Schrittweise Konfiguration des Stream Processors mit Block Routing wird am folgenden Beispiel erläutert:

  1. Aggregate-Blöcke 1 bis 3 mit den gleichen Parametern anlegen (Konfiguration des Aggregator-Blocks "aggregate1")

    • Samples mit Size „1” und HoppingEach „1“

    • Behavior: ignore default and collect für „b”

  2. Neuen Processing Block vom Type Router mit Name "Routing" anlegen (Konfiguration des Route-Block "Routing")

    • Routes anlegen:

      • Route Name: b<10000

      • Conditions:

        • Name: toAggregate1

        • Value: RegEx(header_scope, '^a$') && body_b<10000

router aggr
Figure 1. Konfiguration des Aggregator-Blocks "aggregate1"
router routes
Figure 2. Konfiguration des Route-Block "Routing"