Flink-ESB Message-Gateway Tutorials
Ausgangssituation: es gibt einen Ticket-Service, verfügbar über die JMS-Transport auf 3 verschiedenen JMS-Queues: "urgent", "normal" und "slow"
Die Nachrichten, die in die "urgent"-Queue gesendet werden, werden am schnellsten bearbeitet. Tickets mit PRIO 2 und 3 sollten in die "normal"-Queue geschickt werden. Tickets mit der niedrigsten Priorität werden über "slow"-Queue ausgetauscht
Format von Nachrichten: XML. Es gibt eine Schemadatei die das Format von Ticket-Requests und -Responses beschreibt
Ziel: Möglichkeit die Dienste über eine HTTP POST Url aufzurufen hinzuzufügen
Es sollte das gleiche Nachrichtenformat verwendet werden. XML-Requests sollen gegen Schemadatei geparst werden. Im Fall Parsing fehlschlägt: ein Fehler sollte an den aufrufenden HTTP-Client geworfen werden.
Tickets sollen automatisch auf 3 verschiedenen JMS-Warteschlangen je nach Ticket-Priorität gesendet werden (anhand des Wertes des "priority"-Element innerhalb von XML-Nachricht)
Prio 1 Tickets sollten in die "urgent"-Queue verschickt werden, Prio 2 und 3: in die "normal"-Queue, und Prio 4: in "slow"-Queue
Voraussichtliche Kosten:
Programmieraufwand: 0
Administratoraufwand: 15 Minuten
Flink-ESB Message-Gateway Konfig-Konsole im Browser öffnen. Standard-URL: https://localhost:8082. Einloggen mit Standard Benutzername/Passwort: admin/admin. Sie sollten nun die Haupt-Seite ohne Konfigurationseinträge sehen, so wie auf dem Bild unten dargestellt:
"Destinations"-Reiter wählen und auf "Add Entry" Knopf drücken.
Geben Sie die Daten wie auf dem Bild unten ein: "Destination Id": 1001 (oder jede beliebige eindeutige Id), "Protocol": JMS, "MEP": REQ_REPLY, "Destination Expression": 'urgent'. !!! Stellen Sie sicher, dass "Destination Expression" Wert in einfachen Anführungszeichen ist !!!
Klicken Sie auf der hinzugefügten Zeile um Detailspanel zu verbergen. Klicken Sie auf "Add Entry" Taste erneut, und geben Sie die Daten für das zweite Ziel ein: "Destination Id" : 1002 (oder jede beliebige eindeutige Id), "Protocol" : JMS, "MEP" : REQ_REPLY, "Destination Expression" : 'normal'.
Details-Panel ausblenden. Klicken Sie auf "Add Entry" -Button und geben die Daten zum dritten Ziel ein: "Destination Id" : 1003 (oder jede beliebige eindeutige Id), "Protocol" : JMS, "MEP" : REQ_REPLY, "Destination Expression" : 'slow'.
Details-Panel des dritten Ziel ausblenden. Überprüfen Sie nun die Daten aller drei Ziele. Sie sollen wie auf dem Bild unten aussehen:
Wenn Sie irgendwo Fehler gefunden haben, klicken Sie auf der jeweiligen Zeile um Details-Panel sichtbar zu machen, und beheben Sie die Daten. Klicken Sie nun auf "Save Modifications" um die neuen Ziele zu speichern
Klicken Sie auf "Validation Rules"-Reiter und danach klicken Sie auf "Add Entry" Button. Geben Sie Daten wie auf dem Bild unten ein: "Rule Id": 1001 (oder jede beliebige eindeutige ID), "Rule Type": SCHEMA, "Expression or Filename": 'D: /programming/xsd/ticket.xsd' (verwenden Sie Ihren lokalen Pfad für die Schemadatei)
Klicken Sie auf "Save Modifications" um die Validierungsregel zu speichern
Klicken Sie auf "Gateway Config" und danach auf "Add Entry". Geben sie die Daten wie auf der Abbildung unten: "Config Id": 1001 (oder irgendeine eindeutige ID), "Method": POST, "URI": /service/ticket. Lassen Sie alle anderen Felder unverändert
Jetzt drücken Sie auf "Edit Request Validation Rules" -Link und wählen Sie dann "Show all rules" Checkbox. Dies sollte die Validierungsregel aus dem vorherigen Schritt sichtbar machen. Aktivieren Sie die Checkbox auf der linken Seite dieser Regel, um es dem Fassade-Eintrag zuzuweisen (die Farbe ändert sich von grau auf schwarz) wie auf dem Bild unten:
Klicken Sie auf "Edit Destination Rules" Link und wählen Sie dann "Show all rules" Checkbox. Dies sollte drei Ziele, die im Schritt 1 erstellt worden sind, sichtbar machen. Wählen Sie 3 JMS-Ziele und geben Sie die Daten wie auf dem Bild unten ein: "Condition" für Regel 1: xpathIgnoreNamespace(property['request'], '//priority')=='1', "Ranking" für Regel 1: 10, "Condition" für die Regel 3: xpathIgnoreNamespace(property['request'], '//priority')=='4', "Ranking" für Regel 3: 5
Was es bedeutet: Message-Gateway wählt das passende Ziel nach diesen Regeln: 1) Ziele anhand Ranking ordnern (Ziel mit dem höchsten Ranking wird zuerst versucht); 2) Validiere "Condition" und sehe ob sie den Wert "true" zurückgibt. Ist dies der Fall - wird aktuelles Ziel ausgewählt und eine Anfrage an dieses Ziel gesendet. Wenn "false" zurückgegeben wird, wird ein nächstes Ziel geprüft. Dies setzt sich fort, bis das letzte Ziel (mit dem niedrigsten Ranking) erreicht ist. Da es keine Bedingung hat, gibt es immer "true" zurück. Buchstäblich bedeutet das: Dokumente mit "priority" -Element mi dem Wert "1" werden an das erste Ziel gesendet, Dokumente mit "priority" -Element mit dem Wert "4" werden an das dritte Ziel gesendet. Alle anderen (Priorität 2 und 3) werden an das zweite Ziel gesendet.
Klicken Sie auf Fassade-Eingabezeile um Details-Panel zu verbergen. Stellen Sie sicher, es sieht aus wie auf dem Bild unten:
Wenn Fehler gefunden, klicken Sie auf Fassade-Eingabezeile um Details-Panel zu enthüllen, und beheben sie die Daten. Drücken Sie nun auf "Save Modifications", um die Änderungen zu speichern
Klicken Sie auf "Gateway Config" Registerkarte, wenn Sie noch nicht da sind, und klicken Sie auf "Trigger Instances" -Taste. Bestätigen Sie die Meldung mit der Taste "OK"
Öffnen Sie Flink-ESB Admin-Konsole im Browser. Standard-URL: https://localhost:8443/console/start. Melden Sie sich mit Ihrem Konto/Passwort an (Standard nach der Installation: admin/admin).
Klicken Sie auf "Applications Overview" um es zu erweitern. Nun sollten Sie einen Instanznamen sehen. Klicken Sie auf Dreieck auf der linken Seite des Instanznamen um es zu erweitern. Sie sollten jetzt die auf dieser Instanz installierten Anwendungen sehen. Klicken Sie auf das Dreieck neben "Message Gateway" Anwendung und klicken Sie auf "Routes".
Nun sollten Sie die Routen sehen. Klicken Sie auf "from-HTTP-1001" Route, wobei "1001" - Id des Fassade-Eintrags ist. Jetzt sollten Sie folgendes sehen:
Klicken Sie auf "Call Route" Reiter auf der rechten Seite direkt unterhalb der grafischen Darstellung der Route.
Geben Sie '' in dem "Payload" -Feld ein, und fügen Sie den Inhalt des XML-Beispiel-Requests zwischen einfachen Anführungszeichen.
Drücken Sie "Call". Jetzt sollten Sie die Antwort sehen:
Vergewissern Sie sich, dass "destination.id" Eigenschaft des Responses den Wert hat, dass der Id des Ziels in Message-Gateway Konfig-Konsole entspricht.
Ändern Sie Priorität in dem Request auf "2" und drücken Sie "Call" wieder. Überprüfen Sie die Antwort und den Wert von "destination.id" Eigenschaft. Wiederholen Sie diesen Vorgang mit der Priorität "3" und "4"