Prof. Dr . Frank Leymann / Thorsten Scheibler Institut für Architektur von Anwendungssystemen Universität Stuttgart Übungen „Message-basierte Anwendungen“ WS 08/09 Blatt 2 – 19.11.2008 Aufgabe 2.1 – Message-oriented Middleware Es ist eine Message-oriented Middleware nach der unten dargestellten Topologie gegeben. In diesem Szenario kann Klient A Nachrichten über das MQ System 1 versenden. Klient B kann Nachrichten aus dem MQ System 2 abholen und über das MQ System 4 versenden. Klient C kann Nachrichten aus dem MQ System 5 abholen. 2.1 a - Topologie Erstellen Sie die detaillierte Topologie dieses Szenarios. Es sollen alle Komponenten aufgelistet werden, die dabei zum Einsatz kommen (MQI, MQM, Ports + Listener, alle Queues, QM Definitionen, Kanäle samt Konfigurationen,…). 2.1 b - Kommunikation Klient A sendet eine Nachricht ab. Diese Nachricht wird an den Klienten C weitergegeben. Erläutern Sie den genauen Ablauf, wie die Verbindungen zwischen den einzelnen Komponenten hergestellt werden. Verwenden Sie dazu Befehle des MQI und des MQM. Falls geeignete Befehle im Skript nicht auftauchen, können Sie Pseudo-Befehle einführen. 2.1c – Fehlerfall In einem Fehlerfall ist MQ System 2 nicht verfügbar. Was passiert mit Nachrichten von MQ System 1 und 4, die an dieses System gesendet werden? Kanal Ka na l Kanal MQ System 4 MQ System 3 l na Ka Klient B l na MQ System 2 Ka l MQ System 1 Ka na l Kanal Kana Klient A MQ System 5 Abbildung 3.1: Topologie einer MOM Seite 1 von 3 Kanal Klient C Message-basierte Anwendungen WS 08/09 Übungsblatt 2 19.11.2008 Aufgabe 2.2 – JMS Message Types Es existiert eine Nachricht der Form {Firmenname, Aktienkurs}. Pro Nachricht werden Aktienkurse mehrerer Firmen zu einem bestimmten Zeitpunkt abgesendet. Diese Information kann in verschiedene JMS Nachrichtentypen verpackt werden (TextMessage, ObjectMessage, MapMessage,…). Zeigen Sie, welche unterschiedlichen Möglichkeiten existieren, diese Mitteilungen über JMS zu versenden. Je nach Typ sieht der Nachrichteninhalt (Body) unterschiedlich aus. Stellen Sie für jede einzelne Möglichkeit eine oder mehrere Formen des Nachrichteninhaltes dar1. Aufgabe 2.3 – JMS Header Informationen JMS Nachrichten können mit Hilfe von Header Feldern bestimmte Quality-ofService (QoS) Level erreichen. Geben Sie an, welche Header Felder wie gesetzt sein müssen, um jeweils folgende Eigenschaft zu erreichen: - Nachricht mit hoher Dringlichkeit ausliefern - Nachricht soll beantwortet werden (wie sieht außerdem die Antwortnachricht aus) - Aus der Nachricht muss erkennbar sein, wann sie erzeugt wurde - Nachricht ist nur eine bestimmte Zeit gültig Kann man folgende QoS Level ebenfalls mit Header Feldern erreichen oder sind hierzu weitere Eigenschaften/ Einstellungen/ Konfiguration (z.B. an der Infrastruktur) nötig? - Nachricht genau einmal und nur einmal senden (once-and-only-once) - Nachricht mindestes einmal senden (at-least-once) - Nachricht höchstens einmal senden (at-most-once) Aufgabe 2.4 – JMS Properties JMS besitzt keine Vorkehrungen, um Sicherheit der Nachrichten zu gewährleisten. Sicherheit bedeutet dabei Authentifizierung des Senders und Verschlüsselung des eigentlichen Nachrichteninhalts. Erläutern Sie, wie mit Hilfe von JMS Properties die Nachrichten mit Informationen angereichert werden können, um Sicherheitsaspekte umsetzen zu können2. Erstellen Sie dazu ein geeignetes Protokoll, bei welchem zunächst der Benutzer authentifiziert und anschließend ein sicherer Kanal zum Server aufgebaut wird. Achten Sie darauf, dass keine sicherheitskritischen Daten (wie z.B. ein Passwort) unverschlüsselt übertragen werden. Aufgabe 2.5 – JMS Message Selectors Ein „Message Selector“ erlaubt einem JMS Konsumenten eingehende Nachrichten bereits frühzeitig zu filtern, bevor er sie (unnötigerweise) verarbeiten muss. Solche Selektoren verwenden dabei Headerfelder und Properties als Kriterien in bedingten Anweisungen. Im Folgenden werden zwei Szenarien beschrieben. Stellen Sie für jedes dieser Szenarien einen Selektor auf und erläutern Sie, welche Headerfelder dabei verwendet werden bzw. welche Properties die Nachricht enthalten muss. Ein Selektor ist dabei nichts anderes als ein boolscher Ausdruck, ähnlich der ‚where’ Klausel eines SQL Statements. 1 Beispiel für TextMessage: eine Möglichkeit wäre „ Firmenname Kurs,…“ Verwenden Sie zur Authentifizierung ein Protokoll mit Hilfe von Benutzername und Passwort. Verschlüsselung soll mit Hilfe von privaten und öffentlichen Schlüsseln erfolgen. 2 Seite 2 von 3 Message-basierte Anwendungen WS 08/09 Übungsblatt 2 19.11.2008 Szenario 1: Eine Versicherungsanwendung möchte aus der großen Anzahl von Mängelbeschwerden, die als Nachrichten in einer Message Queue landen, alle diejenigen herausfiltern, die nicht älter als drei Wochen sind und nur von Chemikern oder Physikern stammen, die an der Universität Stuttgart angestellt sind. Szenario 2: Ein Hersteller möchte eine Mitteilung erhalten, wenn die Bestellung des Artikels mit der Inventarnummer ‚SFW374556-02’ mit mindestens 100 stück eingeht. Aufgabe 2.6 – Topics Stellen Sie ein Topic auf, das die deutsche Börse widerspiegelt. Dabei soll es neben den unterschiedlichen Indexen (DAX30, MDAX, NEMAX50, TECDAX,…) auch Topics für verschiedene Branchen geben (Fahrzeuge – Hersteller oder Zulieferer, Maschinenbauer – Hersteller oder Zulieferer,…). Firmen können dabei unter verschiedenen Zweigen vertreten sein, d.h. eine Firma kann z.B. ihre Nachrichten über das Topic DAX30 und gleichzeitig auch über das Topic Maschinenbauer – Hersteller veröffentlichen. BMW möchte nun seine Nachrichten veröffentlichen. Auf welche Topics veröffentlicht er diese? Ein Kunde möchte alle Informationen der DAX30 Unternehmen sowie der Unternehmen Bosch und MAN erhalten (und keine weiteren). Auf welche Topics muss er sich in diesem Fall einschreiben Seite 3 von 3