Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

Ähnliche Präsentationen


Präsentation zum Thema: "Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität."—  Präsentation transkript:

1 Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität Halle-Wittenberg Hauptseminar - Halle - 17.02.2016

2 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp2 Gliederung 1.Message Queuing 2.Entwurfsmuster für MQS 3.Oracle Advanced Queuing 4.JavaMessagingService

3 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp3 Einleitung Middleware bildet zusätzliche Sicht zwischen Hardware/Betriebssystem und Anwendungssicht Aufgabe: –Verbergen der Unterschiede der einzelnen Plattformen –System aus Anwendungssicht homogen erscheinen zu lassen Ansatz ist Message Queuing Systeme (MQS) Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

4 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp4 Nachrichtenaustausch mit Queues Kommunikation zwischen Anwendungen über Austausch von Nachrichten (Messages), die in Queue gestellt bzw. entnommen werden Programme kommunizieren über ein Netzwerk ohne private und logische Verbindung Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

5 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp5 Nachrichtenaustausch mit Queues Einwegkommunikation: Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

6 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp6 Nachrichtenaustausch mit Queues Zweiwegkommunikation: Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

7 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp7 weiteres Merkmal: –asynchrone Kommunikation 4 Queues sind notwendig für Client-Server-Anwendungen: –Request-Queue –Reply-Queue –Dead-Letter-Queue (clientseitig) –Dead-Letter-Queue (serverseitig) Nachrichtenaustausch mit Queues Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

8 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp8 Zwei Modelle beim Einsatz von MQS –Point-to-Point –Publish-and-Subscribe Nachrichtenaustausch mit Queues Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

9 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp9 Netzwerkhandling Netzwerkhandling wir vor den Anwendungen versteckt MQS: -regelt Kommunikation über das Netz -kann auf auftretende Fehler reagieren Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

10 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp10 Kommunikationsablauf im Detail Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

11 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp11 Queue Manager und Message Queuing Interface mindestens ein Queue Manager (QM)pro Rechner bzw. Netzwerkknoten bei einzelnen Knoten -„normalen“ Rechner -„thin clients“ Rechner Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

12 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp12 Queue Manager und Message Queuing Interface Message Queuing Interface(MQI) für die Kommunikation zwischen Anwendung und QM besteht aus einer Menge von „Calls“ (Aufrufen) Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

13 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp13 Transaktionsunterstützung drei Stufen der Transaktionsunterstützung: -interne Transaktionen -Unterstützung externe Transaktionmanager -Rolle eines Transaction Coordinators Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

14 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp14 Vergleich MessageQueuing mit anderen Middlewaretechnologien CORBA verbreitete Technik – ohne grossen Aufwand einsetzbar problematisch bei Auftreten eines Fehlers Verteilte Transaktionsverarbeitung auftretende Fehler werden automatisch korrigiert hohe Kosten und schmales Spektrum der unterstützenden Systeme MQS „ die goldene Mitte“ übernimmt das Netzwerkhandling Entkopplung der Anwendungen problematisch bei stark zeitbezogenen Systemen Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

15 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp15 Vorteile von Messaging und Queuing freie Kapazitäten entstehen einfache Verwendung des Interface keine Beschränkung der Anwendungsarchitektur Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

16 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp16 Möglichkeiten des Message Queuing A A Q1Q1 Q1Q1 D D C C B B Q2Q2 Q2Q2 Q3Q3 Q3Q3 E E F F Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService RQ 2 RQ 1 Keine logische Verbindung zwischen E und F E schreibt Message in Queue (put) F nimmt Message aus Queue (get) Point-to-Point Kommunikation Keine logische Verbindung zwischen E und F E schreibt Message in Queue (put) F nimmt Message aus Queue (get) Point-to-Point Kommunikation One-to-one Relationship E sammelt die Ergebnisse von B, C und D B, C, D können z.B. Client von Server- programm E sein (Subscriber) Messagebearbeitung nach FIFO oder Prioritäten E sammelt die Ergebnisse von B, C und D B, C, D können z.B. Client von Server- programm E sein (Subscriber) Messagebearbeitung nach FIFO oder Prioritäten Many-to-one Relationship A verteilt Arbeit auf B, C und D B, C, D können parallel arbeiten (load balancing) schnellere Bearbeitung bei sequen- tieller Abfolge Publish & Subscribe A verteilt Arbeit auf B, C und D B, C, D können parallel arbeiten (load balancing) schnellere Bearbeitung bei sequen- tieller Abfolge Publish & Subscribe One-to-many Relationship E sendet nur Request an F keine Rückmeldung des Program- mes, daß die Message aus der Queue nimmt Bsp.: Fire-and-Forget E sendet nur Request an F keine Rückmeldung des Program- mes, daß die Message aus der Queue nimmt Bsp.: Fire-and-Forget One-way Communication C veranlasst E zur Rückmeldung (Reply) können Ergebnisse einer Operation sein oder Bestätigungen C veranlasst E zur Rückmeldung (Reply) können Ergebnisse einer Operation sein oder Bestätigungen Two-way Communication Flexibles Systemdesign Keine Einschränkungen in der Applikationsstruktur

17 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp17 Message Aufbau einer Message Message Describtor Application Data Message Identifier (24 Byte String) Correlation Identifier (24 Byte String) Eigentliche Nachricht 4 MB – 100 MB Queues Target Queue Reply Queue (opt.) Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService Attribute date time priority persistance expiry date

18 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp18 Attribute einer Queue Queue Name Max. Anzahl von Messages Max. Messagegröße Voreingestellte Art der Messages (persistent oder transient) Eindeutige Identifizierung der Queue durch andere Komponenten des Systems Einschränkungen / Vorein- stellungen für Programme, die auf Queue zugreifen Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

19 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp19 LQLQ LQLQ QM B QM B TQ A TQ C Arten von Queues LQLQ LQLQ QM A QM A TQ B TQ C N E T Z W E R K Applikation A Applikation B Applikation C LQLQ LQLQ QM C QM C TQ A TQ B DQ AQ IQ Applikation D DLQ Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService Local Queues alle Queues, die dem QM zugeordnet sind auf den die App. zugreift App. schreibt in LQ App. Liest aus LQ Remote Queues alle Queues, die nicht lokal sind App. weiß phys Ort nicht QM übernimmt Zustellung Transmission Queues Zwischenqueue beim Senden Je 1 TQ für jeden remote QM Remote QM liest aus TQ und schreibt in seine LQ Dynamic Queues autom. Beendigung beim Progr.ende dynamische Erzeu- gung - permanent (überle- ben QM restart) - temporär Alias Queues dieselbe physische Queue mehrere Programme Zugriff auf dieselbe Queue Aufruf über versch. Namen (Definitionen) Initiation Queues QM schreibt in IQ wenn Bed. Einer LQ erfüllt ist IQ triggert neue Applikation App. handelt das auslösende Event Dead-Letter Queues Queue für unzustell- bare Nachrichten Jeder QM hat DLQ Gründe: - Zielqueue voll - Zielqueue ex. nicht -...

20 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp20 Client Server Entwurfsmuster Sende Anfrage Erwarte Antwort Lese Anfrage Sende Ergebnis Führe aus Daten Pseudosynchronous Inquiry Request Message Q1Q1 Q1Q1 Reply Message Q2Q2 Q2Q2 Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService Kommunikation asynchron Client kann nicht weiterarbeiten bis Reply-Message eingetroffen nur lesender Zugriff Kommunikation asynchron Client kann nicht weiterarbeiten bis Reply-Message eingetroffen nur lesender Zugriff Anfragen idempotent wiederholt sich die Anfrage ändert sich das Ergebnis nicht bei timeout: Wiederholung einfaches Error-handling Anfragen idempotent wiederholt sich die Anfrage ändert sich das Ergebnis nicht bei timeout: Wiederholung einfaches Error-handling Reply Message: Nicht persistent Reply Queue: Temporary Dynamic Queue Request Queue: Standard Queue Request Message: Nicht persistent Problem: Orphans

21 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp21 Entwurfsmuster (2) Client Server Lese Anfrage Sende Ergebnis Führe aus Daten Asynchronous Inquiry Request Message Q1Q1 Q1Q1 Reply Message Q2Q2 Q2Q2 Sende Anfrage Arbeite weiter Erhalte Antwort Problem: Wie erfährt Client vom Eintreffen der Reply-Message ? Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService Kommunikation asynchron Client kann weiterarbeiten und muss nicht blockierend auf Reply- Message warten Kommunikation asynchron Client kann weiterarbeiten und muss nicht blockierend auf Reply- Message warten Request ist Anfrage Daten des Servers bleiben unan- getastet bei Fehler: Wiederholung Request ist Anfrage Daten des Servers bleiben unan- getastet bei Fehler: Wiederholung

22 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp22 Entwurfsmuster (3) Client Server Sende Auftrag Lese Auftrag Führe aus Daten Fire-and-forget Update Request Message Q1Q1 Q1Q1 Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService Änderung von Daten Ankunft der Nachricht muss garan- tiert werden keine Bestätigung der ausge- führten Änderungen Änderung von Daten Ankunft der Nachricht muss garan- tiert werden keine Bestätigung der ausge- führten Änderungen Anfragen nicht-idempotent evtl. Sicherstellung daß Nachricht nur einmal gesendet wird Anfragen nicht-idempotent evtl. Sicherstellung daß Nachricht nur einmal gesendet wird Request Queue: Standard Queue Request Message: Persistent (exactly one o. at least one)

23 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp23 Entwurfsmuster (4) Client Server Sende Auftrag Erwarte Bestätigung Lese Auftrag Sende Ergebnis Führe aus Daten Pseudosynchronous Update Request Message Q1Q1 Q1Q1 Reply Message Q2Q2 Q2Q2 Problem: Bei Ausbleiben der Bestätigung keine Info ob Update erfolgreich verarbeite Daten Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService Anfragen sind Updates Modifizierung von Daten Client kann nicht weiterarbeiten bis Bestätigung eingetroffen Anfragen sind Updates Modifizierung von Daten Client kann nicht weiterarbeiten bis Bestätigung eingetroffen Anfragen nicht-idempotent Vermeidung unbeabsichtigter Wiederholungen ein und derselben Anfrage Anfragen nicht-idempotent Vermeidung unbeabsichtigter Wiederholungen ein und derselben Anfrage

24 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp24 Entwurfsmuster (5) Client Server Lese Auftrag Sende Ergebnis Führe aus Daten Request Message Q1Q1 Q1Q1 Reply Message Q2Q2 Q2Q2 Sende Auftrag Arbeite weiter Bearbeite Bestätigung Asynchronous Update with Acknowledgement Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService Manipulation von Daten Client erwartet Bestätigung Asynchrone Kommunikation Manipulation von Daten Client erwartet Bestätigung Asynchrone Kommunikation Anfragen nicht-idempotent evtl. Sicherstellung daß Nach- richt nur einmal gesendet wird durch Persistenz garantierte Nachrichtenübermittlung Anfragen nicht-idempotent evtl. Sicherstellung daß Nach- richt nur einmal gesendet wird durch Persistenz garantierte Nachrichtenübermittlung Reply Message: Persistent (exactly one o. at least one) Reply Queue: Permanent Dynamic Queue Request Queue: Standard Queue Request Message: Persistent (exactly one o. at least one)

25 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp25 Beispiel: Oracle8i Advanced Queuing Oracle8i ist ein message-orientiertes System System hat Queues (Warteschlangen) implementiert Queues ermöglichen eine asynchrone Kommunikation Oracle8i stellt mit der Advanced Queuing Technologie eine message-queuing-Infrastruktur zur Verfügung, die vollständig in die Datenbank integriert ist Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

26 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp26 Vorteile der Advanced Queuing Technologie Backup/Recovery Unbegrenzte Messageanzahl Möglichkeit des Aufbaus eines Message-Warehouse Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

27 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp27 Nachrichtenverarbeitung Anwendung stellt die Nachricht mit der Enqueue-Operation in eine Warteschlange (Queue) berechtigte Anwendungen können nun zeitlich unabhängig mit einer Dequeue-Operation diese Nachricht entnehmen und verarbeiten DEQUEUE ENQUEUE Message QUEUE Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

28 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp28 Vorteile duch Benutzung von Queues fehlertolerantere Systeme Anwendungen können nach Bereitstellung der Nachricht gleich weiterarbeiten Möglichkeit der Integration unterschiedlicher Anwendungssysteme Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

29 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp29 Queues in der Datenbank (1) 1.Single-Consumer-Queue jede Nachricht ist nur für eine Anwendung (Verbraucher) bestimmt Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

30 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp30 Queues in der Datenbank (2) 2. Multi-Consumer-Queue jede Nachricht kann für beliebig viele Verbraucheranwendungen bestimmt sein Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

31 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp31 Queues in der Datenbank (3) 3. Queue-to-Queue Message kann auch von einer Queue in eine andere Queue übertragen werden >> Propagation Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

32 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp32 Komponenten eines Oracle8i-AQ Systems System besteht aus 3 Komponenten QT Message-Kopf Message-Payload (Daten) I.Queue-Tabellen II.Queues III.Messages Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

33 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp33 I. Queue-Tabellen Speicherorte der Queues Charakteristische Eigenschaften: Art der Datenstruktur, die eine Message besitzen kann Sortierung der Messages innerhalb der Queues Art der Queues, die innerhalb der Queue-Tabelle definierbar sind Gruppierung aller Nachrichten einer Transaktion Erzeugt durch den Befehl: DBMS_AQADM.CREATE_QUEUE_TABLE Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

34 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp34 II. Queues Speicherorte für die einzelnen Nachrichten Charakteristische Eigenschaften: Art der Queue (Normal, Exception, Non-Persistent) Maximale Anzahl von ´dequeue´-Wiederholungen im Fehlerfall Speicherzeit der Messages (nachdem eine Message verbraucht wurde) Erzeugt durch den Befehl: DBMS_AQADM.CREATE_QUEUE Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

35 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp35 III. Message Träger der relevanten Informationen, die über das Message- System übermittelt werden sollen Besteht aus 2 Teilen Message-Kopf >> enthält Informationen über die Nachricht Message-Payload >> der Datenteil, in dem sich die Daten befinden Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

36 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp36 Operationen mit Queues (1) ENQUEUE stellt eine Nachricht in die Warteschlange Syntax: DBMS_AQ.ENQUEUE ( Queue_name Payload Syntax: DBMS_AQ.ENQUEUE ( Queue_name Payload Beispiel DBMS_AQ.ENQUEUE ( Queue_name=> ´q1´, Payload=> nachricht); Beispiel DBMS_AQ.ENQUEUE ( Queue_name=> ´q1´, Payload=> nachricht); Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

37 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp37 Operationen mit Queues (2) DEQUEUE Operation, über die alle Benutzer eine Message aus einer Queue entnehmen können Für eine ´dequeue´-Operation wird angegeben: die Queue, aus der die Message entnommen werden soll die ´dequeue´-Optionen Message-Eigenschaften der Datenbereich (payload) Message-Identifikation (message_id) Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

38 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp38 Operationen mit Queues (3) BEISPIEL EINER DEQUEUE-OPERATION DBMS_AQ.DEQUEUE ( QUEUE_NAME=>´q_1´, DEQUEUE_OPTIONS=>dequeue_opts, MESSAGE_PROPERTIES=>m_p, PAYLOAD=>nachricht, MESSAGE_HANDLE =>msg_h ); Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

39 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp39 Operationen mit Queues (4) DEQUEUE-OPTIONS Steuern der ´deque´-Operation wird angegeben welche Message verarbeitet werden soll wie eine Message verarbeitet werden soll  Remove-Mode  Browse-Mode  Locked-Mode Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

40 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp40 Operationen mit Queues (5) DEQUEUE-OPTIONS (2) die Zugriffsposition innerhalb der Queue  First_message  Next_message  Next_transaction ob und wie lange eine ´dequeue´-Operation auf eine Message warten soll, falls diese in der Queue nicht vorhanden ist Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

41 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp41 Der Java Message Service Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

42 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp42 Java Message Service (JMS) Programmiersprachenbasierte MOM Unterstützt beide Kommunikationsmodelle Publish/Subscript Client1 Publishes Msg Client2 Subscribes Delivers Msg Topic Client3 Subscribes Delivers Msg -- Peer to Peer -- Client1 Client2 Queue Sends Consumes Acknowledges Msg Domain Message Consumption Synchron Asynchron Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

43 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp43 JMS API Architecture Administrative Tool JMS Client JMS Provider JNDI Namespace DCF Bind Lookup Logical Connection Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

44 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp44 The JMS API Programming Model Connection Factory Verbindungskonfigurations- parameter Client benutzt CF, um Verbindung zu JMS Provider zu kreieren Connection Factory Verbindungskonfigurations- parameter Client benutzt CF, um Verbindung zu JMS Provider zu kreieren Connection aktive Verbindung von Client zu JMS Provider Authentität des Clients überprüft Eindeutiger Client Identifier Liefert ConnectionMetaDaten Connection aktive Verbindung von Client zu JMS Provider Authentität des Clients überprüft Eindeutiger Client Identifier Liefert ConnectionMetaDaten Session Produktion/Verbrauch von Nachrichten Definiert Ordnungsrelation Behält konsumierte Nachrichten, bis zur Bestätigung Session Produktion/Verbrauch von Nachrichten Definiert Ordnungsrelation Behält konsumierte Nachrichten, bis zur Bestätigung Session(2) Message Listener Transcation Transacted Session Non-transacted Session Bsp.:Onlineshopping Session(2) Message Listener Transcation Transacted Session Non-transacted Session Bsp.:Onlineshopping Message Producer zum Senden von Nachrichten an eine Destination Message Producer zum Senden von Nachrichten an eine Destination Message Consumer zum Empfangen von Nachrichten einer Destination Message Listener Message Selector Message Consumer zum Empfangen von Nachrichten einer Destination Message Listener Message Selector Message Format ist einfach, jedoch sehr flexibel Für jedes Format auf jeder Plattform 3 Teile: Header Properties Body Message Format ist einfach, jedoch sehr flexibel Für jedes Format auf jeder Plattform 3 Teile: Header Properties Body Connection Factory Connection Creates Message Producer Creates Session Creates Destination Sends To Destination Receives From Message Creates Message Consumer Creates Administrative Objekte Objekte im Programm Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

45 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp45 Messages Message Format ist einfach, jedoch sehr flexibel Für jedes Format auf jeder Plattform 3 Teile: Header Properties Body Message Format ist einfach, jedoch sehr flexibel Für jedes Format auf jeder Plattform 3 Teile: Header Properties Body Header Properties Body Header FieldSet By JMSDestinationsend or publish method JMSDeliveryModesend or publish method JMSExpirationsend or publish method JMSPrioritysend or publish method JMSMessageIDsend or publish method JMSTimestampsend or publish method JMSCorrelationIDClient JMSReplyToClient JMSTypeClient JMSRedeliveredJMS provider ------ Header ----- JMSMessageID identifiziert Nachricht eindeutig JMSDestination Queue/Topic Andere Felder enthalten z.B. Zeitstempel oder Prioritäten Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

46 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp46 Messages Message Format ist einfach, jedoch sehr flexibel Für jedes Format auf jeder Plattform 3 Teile: Header Properties Body Message Format ist einfach, jedoch sehr flexibel Für jedes Format auf jeder Plattform 3 Teile: Header Properties Body Header Properties Body ------ Properties ----- Beschreibende Felder einer Nachricht  read only zusätzliche Informationen über Daten / Prozess, der sie kreiert hat Syntax: property name: property value Optimierung der Kommunikation mit Queue/Topic (z.B. Selektionskriterien) Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

47 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp47 Messages Message Format ist einfach, jedoch sehr flexibel Für jedes Format auf jeder Plattform 3 Teile: Header Properties Body Message Format ist einfach, jedoch sehr flexibel Für jedes Format auf jeder Plattform 3 Teile: Header Properties Body Header Properties Body ------ Body ----- Message Type TextMessage MapMessage BytesMessage StreamMessage ObjectMessage Message Java Zeichenkette: java.lang.String Grund der Aufnahme: String Messages werden extensiv benutzt (XML basierte Nachrichten) Paar Name – String Werte Java Basistypen Sequenziell o. zufälligerZugriff über Namen Reihenfolge ist nicht definiert Uninterpretierte Bytes Universell einsetzbar Stream von Java Basistypen Sequentiell gelesen Serialisiertes Java Objekt Nichts besteht aus Header und Properties Nützlich wenn der Body nicht benötigt wird Body Contains: Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

48 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp48 Übersicht zum Beispielprogramm Initialisierungsteil Starten des JMS Providers Kreieren der JMS adiministr- ativen Objekte Sender-Client-Programm Connection Factory Kreieren der Connection Kreieren der Session Kreieren der Message Schliessen der Connection Empfänger-Client-Programm Connection Factory Kreieren der Connection Kreieren der Session Empfangen der Message Schliessen der Connection Kreieren des MsgProd Kreieren des MsgCons Beenden Löschen der Queues Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

49 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp49 Beispielprogramm (Starten des Providers) Beim Einsatz von J3EE 1.3 SDK, wird JMS im SDK mitgelifert Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

50 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp50 Beispielprogramm (Kreieren der JMS administrierten Objekte) Warteschlange muss zu erst im JNDI registriert werden Geschieht mit dem J2EE Administrations Tool, oder einem Batch Skript auf dem Server Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

51 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp51 Beispielprogramm (Überprüfung der administrierten Objekte) Warteschlange muss zu erst im JNDI registriert werden Geschieht mit dem J2EE Administrations Tool, oder einem Batch Skript auf dem Serverl Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

52 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp52 Sende-Client-Programm Variablen Deklaration JNID InitialContext jndi.properties Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

53 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp53 Sender-Client-ConnectionFactory QueueConnectionFactory ist als Standardfactory vorhanden Erstellung weitere Factorys mit Admintools: j2eeadmin -addJmsFactory jndi_name queue j2eeadmin -addJmsFactory jndi_name topic Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

54 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp54 Sender-Client: Connection / Session Kreieren der Connection Kreieren der SessionMessageProducer wird erstellt Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

55 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp55 Sender-Client: Message kreieren Interface des MessageProducers Senden einer non-text control message zeigt Ende der Messages an Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

56 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp56 Sender-Client: Connection schliessen Das Ende – Connection geschlossen Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

57 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp57 Empfänger-Client: Connection/Session starten MessageConsumer wird erstellt Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

58 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp58 Empfänger-Client: Message empfangen Nach der start Methode kann die receive Methode jederzeit benutzt werden Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

59 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp59 Löschen einer Queue enAdministrative Objekt „meineWarteschlange“ sollte nach Abschluss wieder aus dem Enterpriseserver entfernt werden Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

60 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp60 Was haben wir gelernt?!

61 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp61 Fazit Not every DAD (Distributed Application Development) needs a MOM. But many...

62 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp62 Navigation Zurück zu: Navigation Zurück zu: Connection Factory Connection Creates Message Producer Creates Session Creates Message Consumer Creates Destination Sends To Destination Receives From Message Creates  CF  Message  C/S (S)  C/S (E)

63 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp63 Administrative Tool JMS Client JMS Provider JNDI Namespace DCF Bind Lookup Logical Connection  CF

64 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp64 Nachteile MoM Kein echter Standard für die Programmierung mittels MoM Applikations-Daten einer Nachricht müssen vom Programmierer ein- und ausgepackt werden MQS kennt meist den Inhalt der Nachricht nicht, kann darauf keine Filter anwenden Schwer einsetzbar bei Programmen, die synchronen Ablauf haben MoM verbirgt die Kommunikation nicht

65 © 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp65 Vorteile MoM Asynchron Ereignisgesteuert MoM fügt sich fließend in Programme mit asynchronen oder ereignisgesteuerten Ablauf ein Skalierbarkeit / Verfügbarkeit MoM skaliert sehr gut und führt zu einer höheren Ver- fügbarkeit des Gesamtsystems Orts- / Migrationstransparent Dienste können während der Lebenszeit des Gesamt- systems ihren Ort verändern Dynamisch Dienste können während der Lebenszeit des Gesamt- systems hinzugefügt werden Quality of Service MoM bietet über Quality of Services u.a. die garantierte Auslieferung von Nachrichten


Herunterladen ppt "Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität."

Ähnliche Präsentationen


Google-Anzeigen