Upload
killian-henze
View
104
Download
0
Embed Size (px)
Citation preview
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Kapitel 8:Nachrichtenbasierte
Kommunikation mit JMS
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Middleware und nachrichtenorientierte Middleware
• Eine Software heißt Middleware genau dann, wenn sie die Entwicklung und den Betrieb eines verteilten Systems ermöglicht und Funktionen anbietet, die über einfache Netzwerkkommunikation hinausgehen.
• Eine Middleware heißt nachrichtenorientierte Middleware (MOM) genau dann, wenn die Kommunikation zwischen den beteiligten Komponenten durch den Austausch von Nachrichten über eine Zwischeninstanz erfolgt.
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Vor- und Nachteile einer MOM
Vorteile:– Kommunikation auf
hohem Abstraktionsniveau
– lose Kopplung zwischen einzelnen Komponenten
– Entwickler können sich auf Anwendungslogik konzentrieren
Nachteile:– nicht „out-of-the-box“
verwendbar– zusätzlicher Overhead– ungeeignet für
Echtzeitsysteme– zusätzliche
Lizenzkosten
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Java Message Service (JMS)
• Der Java Message Service (JMS) ist eine Schnittstellenspezifikation von Sun Microsystems zum Zugriff auf nachrichtenorientierte Middleware.
• JMS definiert die Syntax und Semantik beim Zugriff auf eine nachrichtenorientierte Middleware und wurde erstmals im Jahre 1998 veröffentlicht.
• Die aktuelle Spezifikation stammt aus dem Jahr 2002 und trägt die Versionsnummer 1.1.
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Einsatz von JMS
• MOM ohne JMS
• MOM mit JMS
Clientnachrichtenorien-tierte MiddlewareA
PI
ServerAPI
Clientnachrichtenorien-tierte Middleware
API
JMS
Server
API
JMS
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Point-to-Point (P2P)
JMS-Provider
Warteschlange Konsument 1
Produzent
Konsument 1
Konsument 2
Warteschlange Konsument 2
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Publish/Subscribe (Pub/Sub)
JMS-Provider
Topic 1
Produzent 1Abonnent von Topic 1 und 3
Topic 5
Abonnent von Topic 3 und 5
Topic 2
Topic 3
Topic 4Produzent 2
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Verbindungsfabriken
<<interface>>ConnectionFactory
<<interface>>QueueConnectionFactory
<<interface>>TopicConnectionFactory
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Verbindungen
<<interface>>Connection
<<interface>>QueueConnection
<<interface>>TopicConnection
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Sitzungen
<<interface>>Session
<<interface>>QueueSession
<<interface>>TopicSession
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Nachrichtenproduzenten
<<interface>>MessageProducer
<<interface>>QueueSender
<<interface>>TopicPublisher
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Nachrichtenkonsumenten
<<interface>>MessageConsumer
<<interface>>QueueReceiver
<<interface>>TopicSubscriber
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Nachrichten
<<i nterface>>Message
<<i nterface>>BytesMessage
<<i nterface>>Obj ectMessage
<<i nterface>>MapMessage
<<i nterface>>StreamMessage
<<i nterface>>TextMessage
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Aufbau einer JMS-Nachricht
• Nachrichtenkopf (Header)– Der Nachrichtenkopf wird zur Identifikation und zur
Übertragung der Nachricht benötigt und umfasst mehrere Felder.
• Nachrichteneigenschaften (Properties)– Nachrichteneigenschaften erlauben das Speichern
von Zusatzinformationen zur Nachricht.
• Nachrichtenrumpf (Body)– Der Nachrichtenrumpf enthält die Nutzdaten.
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Nachrichtentypen
• BytesMessage
– Übertragung einer Menge uninterpretierter Bytes
• StreamMessage
– Übertragung sequentiell gelesen und geschriebener Daten
• MapMessage
– Übertragung von Name/Wert-Paaren
• TextMessage
– Übertragung von Textdaten
• ObjectMessage
– Übertragung serialisierbarer Objekte
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Header-Felder einer Nachricht (1)
• JMSCorrelationID
– Abhängigkeiten zwischen Nachrichten
• JMSDeliveryMode– PERSISTENT
– NON_PERSISTENT
• JMSDestination
– Nachrichtenziel
• JMSExpiration
– Verfallsdatum der Nachricht
• JMSMessageID
– eindeutiger Bezeichner
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Header-Felder einer Nachricht (2)
• JMSPriority
– Priorität von 0 (niedrig) bis 10 (hoch)
• JMSRedelivered
– Nachricht wurde mehrfach ausgeliefert
• JMSReplyTo
– Ziel der Antwortnachricht festlegen
• JMSTimestamp
– Übergabezeit der Nachricht an den JMS-Provider
• JMSType
– Nachrichtentyp der Nachricht
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Nachrichtenziele
<<interface>>Destination
<<interface>>Queue
<<interface>>Topic
<<interface>>TemporaryQueue
<<interface>>TemporaryTopic
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Ausnahmen in JMS
JMSException
JMSSecurity -exception
MessageNotReadable -exception
InvalidDestination -exception
RessourceAllocation -exception
MessageNotWriteable -exception
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
ECHO-Dienst mit P2P
JMS-Provider
ECHO JMSEchoServer
TEMP_1TEMP_2
JMSEchoClient 1
Produzent
Konsument
JMSEchoClient 2
Konsument
Produzent TEMP_2
2
3
3
1
1
4
4
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
DAYTIME-Dienst mit Pub/Sub
JMS-Provider
DAYTIME JMSDaytimePublisher
JMSDaytimeSubscriber 1
JMSDaytimeSubscriber 2
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Literatur
• Ressourcen von Sun Microsystems Inc. zum Java Message Service (JMS); http://java.sun.com/products/jms
• Sun Microsystems Inc.: Java Message Service Specification; http://java.sun.com/products/jms/docs.html
• Sun Microsystems Inc.: Java Message Service API Tutorial; http://java.sun.com/products/jms/tutorial/index.html
• Richard Monson-Haefel, David A. Chappell: Java Message Service – Creating Distributed Enterprise Applications; O'Reilly 2001
• Levent Erdogan: Java Message Service (JMS) for J2EE; New Riders Publishing 2002
• Markus Mathes: Zeitverhalten von nachrichtenorientierter Middleware und deren Einsatz in der Industrieautomation; Diplomarbeit Fachhochschule Fulda 2004
• Florian Heidinger, Markus Mathes, Helmut Dohmann: Java Messaging Service (JMS) – Einsatz in der Industrieautomation; Automatisierungstechnische Praxis (atp) Ausgabe 05/2004
Middleware in Java vieweg 2005
© Steffen Heinzl, Markus Mathes
Aufgaben
In „Middleware in Java“ finden Sie•Wiederholungs-, •Vertiefungs-, •Programmieraufgaben zu den vorgestellten Themen. Zur Festigung und Vertiefung des Erlernten wird eine Bearbeitung der Aufgaben empfohlen.