Middleware in Java

Werbung
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:
Nachteile:
– Kommunikation auf
hohem
Abstraktionsniveau
– lose Kopplung
zwischen einzelnen
Komponenten
– Entwickler können sich
auf Anwendungslogik
konzentrieren
– 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
nachrichtenorientierte Middleware
API
Client
API
• MOM ohne JMS
Server
• MOM mit JMS
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
Server
JMS
JMS
nachrichtenorientierte Middleware
API
API
Client
Point-to-Point (P2P)
JMS-Provider
Warteschlange
Konsument 1
Konsument 1
Produzent
Warteschlange
Konsument 2
Konsument 2
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
Publish/Subscribe (Pub/Sub)
JMS-Provider
Topic 1
Produzent 1
Topic 2
Abonnent von
Topic 1 und 3
Topic 3
Produzent 2
Topic 4
Topic 5
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
Abonnent von
Topic 3 und 5
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 >>
TopicPublisher
<<interface >>
QueueSender
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
<<interface>>
ObjectMessage
<<interface>>
Message
<<interface>>
BytesMessage
<<interface>>
MapMessage
<<interface>>
TextMessage
<<interface>>
StreamMessage
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
InvalidDestination exception
JMSSecurity exception
JMSException
MessageNotWriteable exception
MessageNotReadable exception
RessourceAllocation exception
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
ECHO-Dienst mit P2P
Konsument
JMSEchoClient 1
4
TEMP_2
Produzent
1
JMS-Provider
TEMP_1
ECHO
1
JMSEchoClient 2
2
JMSEchoServer
3
TEMP_2
Produzent
3
4
Konsument
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
DAYTIME-Dienst mit Pub/Sub
JMSDaytimeSubscriber 1
JMS-Provider
DAYTIME
JMSDaytimeSubscriber 2
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
JMSDaytimePublisher
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.
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
Herunterladen