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
API
API
Client
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
Server
JMS
JMS
nachrichtenorientierte Middleware
Point-to-Point (P2P)
JMS-Pr ovi der
War teschlange
Konsument 1
Konsum ent 1
Produzent
War teschlange
Konsument 2
Konsum ent 2
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
Publish/Subscribe (Pub/Sub)
JMS-Pr ovi der
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
<<i nt erf ace >>
Connect i onFact ory
<<i nt erf ace >>
QueueConnect i onFact ory
<<i nt erf ace >>
Topi cConnect i onFact ory
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
Verbindungen
<<i nt erf ace >>
Connect i on
<<i nt erf ace >>
QueueConnect i on
<<i nt erf ace >>
Topi cConnect i on
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
Sitzungen
<<i nt erf ace >>
Sessi on
<<i nt erf ace >>
QueueSessi on
<<i nt erf ace >>
Topi cSessi on
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
Nachrichtenproduzenten
<<i nt erf ace >>
MessageProducer
<<i nt erf ace >>
Topi cPubl i sher
<<i nt erf ace >>
QueueSender
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
Nachrichtenkonsumenten
<<i nt erf ace >>
MessageConsumer
<<i nt erf ace >>
QueueRecei ver
<<i nt erf ace >>
Topi cSubscri ber
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
Nachrichten
<<i nt er f ace>>
Obj ect Message
<<i nt er f ace>>
Message
<<i nt er f ace>>
Byt esMessage
<<i nt er f ace>>
MapMessage
<<i nt er f ace>>
Text Message
<<i nt er f ace>>
St r eamMessage
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
<<i nt erf ace >>
Dest i nat i on
<<i nt erf ace >>
Queue
<<i nt erf ace >>
Topi c
<<i nt erf ace >>
TemporaryQueue
<<i nt erf ace >>
TemporaryTopi c
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
Ausnahmen in JMS
I nval i dDest i nat i on except i on
JMSSecuri t y except i on
JMSExcept i on
MessageNot Wri t eabl e except i on
MessageNot Readabl e except i on
RessourceAl l ocat i on except i on
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
ECHO-Dienst mit P2P
Konsument
JMSEchoClient 1
4
TEMP_2
Pr oduzent
JMS-Provider
TEMP_1
3
1
ECHO
1
JMSEchoClient 2
JMSEchoServer
3
TEMP_2
Pr oduzent
2
4
Konsument
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
DAYTIME-Dienst mit Pub/Sub
JMSDaytim eSubscriber 1
JMS-Provider
DAYTI ME
JMSDaytim eSubscriber 2
Middleware in Java
vieweg 2005
© Steffen Heinzl, Markus Mathes
JMSDaytim ePublisher
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