Seminar „Enterprise Applications“Daniel Kersting
11.12.2008
Ein Beispielszenario
2» MotivationMessage Oriented Middleware (MOM)
Was ist Middleware? Unterschiedliche Middleware Arten Grundlagen und Eigenschaft von MOM Implementierungsdetails Beispiele
3» InhaltsverzeichnisMessage Oriented Middleware (MOM)
Erste AnnäherungEigenschaften
BeispieleDefinition
4» Was ist MiddlewareMessage Oriented Middleware (MOM)
Erste Annäherungen• Das Wort Middleware
Deutsch: „Zwischenanwendung“ Bezeichnet Software „in der Mitte“
Bezeichnung manchmal missverständlich Viele Middleware Produkte eher wie Server Nicht unbedingt in der Mitte
• Software Klebstoff• Der "/" in Client/Server
5» Was ist Middleware » Erste AnnäherungMessage Oriented Middleware (MOM)
Im ISO/OSI Protokollstack
6» Was ist Middleware » Im ISO/OSI ProtokollstackMessage Oriented Middleware (MOM)
Eigenschaften• Anwendungsneutrale Programme• Kommunikationsinfrastruktur• Vermittelt zwischen Anwendungen• Kommunikation zwischen Prozessen
Fast immer TCP/IP Darauf aufbauend meist HTTP, SOAP…
• Protokoll einer höheren Schicht• Setzt auf verteiltem System auf
7» Was ist Middleware » EigenschaftenMessage Oriented Middleware (MOM)
Beispiele• Die meisten EAI-Produkte beinhalten Middleware-
Funktionalität• Typische Middlewareprodukte
Enterprise Service Bus von Oracle Exchange Infrastructure von SAP (SAP XI) WebSphere Application Server von IBM Common Object Request Broker Architecture (CORBA) von
der Object Management Group (OMG)
8» Was ist Middleware » BeispieleMessage Oriented Middleware (MOM)
MIDDLEWARE KEINE MIDDLEWARE
PHP J2EE JavaScript Hardwaretreiber
Betriebssystem Datenbank Webbrowser Apache Webserver
9» Was ist Middleware » BeispieleMessage Oriented Middleware (MOM)
Allgemein Definition von Middleware:Anwendungsneutrale "Zwischenanwendung" mit Schnittstellencharakter welche zwischen zwei Stücken Software (über ein Netzwerk) vermittelt
10» Was ist Middleware » DefinitionMessage Oriented Middleware (MOM)
KommunikationsorientiertAnwendungsorientiertNachrichtenorientiert
Nachricht vs. Befehl
11» Unterschiedliche Middleware ArtenMessage Oriented Middleware (MOM)
Kommunikationsorientiert• Engl: Transaction Oriented Middleware• Abstraktion von Netzwerkprogrammierung• Entfernte Methodenaufrufe• Beispiele: RPC, Java RMI, Web Service
12» Unterschiedliche Middleware Arten » KommunikationsorientiertMessage Oriented Middleware (MOM)
Anwendungsorientiert• Engl. Distributed Objects and Components• Unterstützung verteilter Anwendungen• Beispiele: CORBA, J2EE oder .NET• Aber auch MIDP (Mobile Information Device Profile),
MHP (Multimedia Home Platform)
13» Unterschiedliche Middleware Arten » AnwendungsorientiertMessage Oriented Middleware (MOM)
Nachrichtenorientiert• Engl. Message Oriented Middleware (MOM)• Arbeitet nicht mit Methoden- oder Funktionsaufrufen
Austausch von Nachrichten Empfänger nimmt Nachricht an, sobald er bereit ist Weitgehende Entkopplung von Sender und Empfänger
• Nachrichtenformat gibt eingesetzte Middleware vor • Kann sowohl synchron als auch asynchron arbeiten• Beispiele: JMS, MSMQ, MQSeries
14» Unterschiedliche Middleware Arten » NachrichtenorientiertMessage Oriented Middleware (MOM)
NACHRICHT (MOM) BEFEHL (RPC)
1. Ein Feuer brennt2. Ein Sensor sendet Nachricht:
„Ein Feuer brennt“3. Empfänger sind beliebig
• Feuerwehr• Löschanlage• Feuertüren• …
1. Ein Feuer brennt2. Ein Sensor
• Informiert Feuerwehr• Startet Löschanlage• Schließt Feuertüren• …
15» Unterschiedliche Middleware Arten » Nachricht vs. BefehlMessage Oriented Middleware (MOM)
Nachricht vs. Befehl
16» Unterschiedliche Middleware Arten » Nachricht vs. BefehlMessage Oriented Middleware (MOM)
Nachricht vs. Befehl
17» Unterschiedliche Middleware Arten » Nachricht vs. BefehlMessage Oriented Middleware (MOM)
WarteschlangeAsynchrones Kommunikationsmodell
KomponentenVor- und Nachteile
18» Grundlagen und EigenschaftenMessage Oriented Middleware (MOM)
Warteschlange nach FIFO Prinzip
19» Grundlagen und Eigenschaften » WarteschlangeMessage Oriented Middleware (MOM)
Asynchrones Kommunikationsmodell • Nicht auf Antwort warten• Sender blockiert nicht• Vergleiche: E-Mail
20» Grundlagen und Eigenschaften » Asynchrones KommunikationsmodellMessage Oriented Middleware (MOM)
Komponenten• Nachrichten (Messages)• Warteschlangen (Queues)• Datentransfer Schnittstelle (Messaging Clients)
21» Grundlagen und Eigenschaften » KomponentenMessage Oriented Middleware (MOM)
Komponenten• Nachrichten (Messages)
Header Routing Identifikation/Authentifikation Priorität
Body Application Data Message Content
22» Grundlagen und Eigenschaften » KomponentenMessage Oriented Middleware (MOM)
23» Grundlagen und Eigenschaften » KomponentenMessage Oriented Middleware (MOM)
<? xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <login:sicherheit xmlns:login="http://example.com/login/"> <login:benutzername>Peter Muster</login:benutzername> <login:passwort>meinpasswort</login:passwort> </login:sicherheit> </soap:Header> <soap:Body> <bank:KontoStand xmlns:bank="http://example.com/bank/"> <Gutschrift>100.00</Gutschrift> </bank:KontoStand> </soap:Body></soap:Envelope>
Komponenten• Beispiel: SOAP Nachricht
Komponenten• Warteschlangen (Queues)
„Mailbox“ einer MOM (MOM-Server) Empfangen und Speichern von Nachrichten Beim Sender oder Empfänger lokalisiert Persistent
Speichern Nachrichten physikalisch Garantierte Übertragung Resourcenhungrig
Non-persistent Speichern Nachrichten nur im RAM
24» Grundlagen und Eigenschaften » KomponentenMessage Oriented Middleware (MOM)
Komponenten• Datentransfer Schnittstelle (Messaging Clients)
Sender/Empfänger Bieten API an
Nachrichten senden/empfangen Session starten Nachricht vorbereiten Routing Parameter
25» Grundlagen und Eigenschaften » KomponentenMessage Oriented Middleware (MOM)
Komponenten
26» Grundlagen und Eigenschaften » KomponentenMessage Oriented Middleware (MOM)
Vorteile• Asynchrone/synchrone Kommunikation
Server/Dienst muss nicht sofort verfügbar sein Message-Warteschlangen
• Schnellere Ausführung Im Vergleich zu Funktionsaufruf-basierten Programmen
• Lose Kopplung von Server/Clients• Mehr Toleranz für Änderungen bestehender Funktion• Verbesserte Verfügbarkeit• Parallele Verarbeitung von Nachrichten
27» Grundlagen und Eigenschaften » Vor- und NachteileMessage Oriented Middleware (MOM)
Nachteile• Ausfall legt alle angeschlossenen Systeme lahm• Designen, Testen, Debuggen und Entwicklung der
Bauteile für Synchron-Programmierer ungewohnt• Zusätzlich Komponenten bzw. Infrastruktur benötigt• Kommunikation zwischen Applikationen oft synchron• Viele unterschiedliche Standards
28» Grundlagen und Eigenschaften » Vor- und NachteileMessage Oriented Middleware (MOM)
Typen der KommunikationMOM Frameworks
29» ImplementierungsdetailsMessage Oriented Middleware (MOM)
Typen der Kommunikation• Message Passing • Message Queueing (Point-to-Point)• Broadcasting• Publish & Subscribe
30» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)
Typen der Kommunikation• Message Passing
Synchrone Kommunikation Über asynchrone Middleware
Direkte Kommunikation zwischen Applikationen Verhält sich ähnlich wie RPC Request/Reply
Sender blockiert, bis Antwort eintrifft Realisierung z.B. über zwei Warteschlangen
31» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)
Message Passing
32» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)
Typen der Kommunikation• Message Queueing
Asynchron Punkt zu Punkt Indirekte Kommunikation über eine Nachrichtenqueue
33» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)
Message Qeueing
34» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)
Typen der Kommunikation• Broadcasting
Nachricht wird an alle erreichbaren Sender versendet
35» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)
Broadcasting
36» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)
Typen der Kommunikation• Publish & Subscribe
Asynchron Broadcast-Kommunikation
Nachricht wird an alle erreichbaren Sender versendet Publisher
Veröffentlichen Nachrichten zu einem Thema Subscriber
Abonnieren bestimmte Themen Vermittlung durch Broker Vergleichbar mit Observer Pattern
37» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)
Vermittler (Broker)
Publish & Subscribe
38» Implementierungsdetails » Typen der KommunikationMessage Oriented Middleware (MOM)
MOM Frameworks• Message Queueing
Indirekte Kommunikation über eine Nachrichtenqueue Punkt zu Punkt Buffered/Persistent MQSeries (IBM)
• Message Broker Vermittler Punkt zu Mehrpunkt ESB
39» Implementierungsdetails » MOM FrameworksMessage Oriented Middleware (MOM)
Message Queueing
40» Implementierungsdetails » MOM FrameworksMessage Oriented Middleware (MOM)
Message Queueing
41» Implementierungsdetails » MOM FrameworksMessage Oriented Middleware (MOM)
Message Broker
42» Implementierungsdetails » MOM FrameworksMessage Oriented Middleware (MOM)
JMSMSMQ
MQSeries
43» BeispieleMessage Oriented Middleware (MOM)
JMS (Java Message Service)• Teil der Java2 Enterprise Edition (J2EE)• Programmierschnittstelle (API)
Ansteuerung von MOM aus einem Client heraus• Man unterscheidet zwei Rollen:
JMS-Provider: der jeweilige MOM-Server JMS-Client: Sender bzw. Empfänger von Nachrichten
• JMS unterstützt: Publish/Subscribe Point-to-Point Request-Reply Modell
• Warteschlange kann persistent sein
44» Beispiele » JMSMessage Oriented Middleware (MOM)
JMS
45» Beispiele » JMSMessage Oriented Middleware (MOM)
public class HelloProducer{ public HelloProducer() {
ConnectionFactory cf = new com.sun.messaging.ConnectionFactory(); Connection connection = cf.createConnection(); Session session = connection.createSession(…); Destination destination = session.createQueue("HelloWorld"); MessageProducer producer = session.createProducer(destination); connection.start(); TextMessage message = session.createTextMessage(); message.setText("Hello World"); producer.send(message); producer.close(); connection.close(); }
public static void main(String args[]) { new HelloProducer(); }}
46» Beispiele » JMSMessage Oriented Middleware (MOM)
public class HelloConsumer{ public HelloConsumer() {
ConnectionFactory cf = new com.sun.messaging.ConnectionFactory(); Connection connection = cf.createConnection(); Session session = connection.createSession(…); Destination destination = session.createQueue("HelloWorld"); MessageConsumer consumer = session.createConsumer(destination); connection.start(); TextMessage m = (TextMessage)consumer.receive(); System.out.println(m.toString()); consumer.close(); session.close(); connection.close(); } public static void main(String args[]) { new HelloConsumer(); } }
47» Beispiele » JMSMessage Oriented Middleware (MOM)
Microsoft Message Queue (MSMQ)• 1998 Windows NT Addon• ActiveX API• Point-To -Point Modell• Intelligentes Routing• Transaktions Management
48» Beispiele » MSMQMessage Oriented Middleware (MOM)
MQSeries• Mittlerweile „Websphere MQ“• Plattformunabhängige MOM von IBM (1992)
Austausch von Nachrichten zwischen heterogenen Anwendungen auf verschiedenen Plattformen
• Asynchrone Datenübertragung• Point-To -Point Modell• Intelligentes Routing• Weite Verbreitung
49» Beispiele » MQSeriesMessage Oriented Middleware (MOM)
MQSeries• Transaktions Management
Interne Transaktion Nachrichten im Fehlerfall neu übertragen
Externe Transaktion Selbst Transaktion
50» Beispiele » MQSeriesMessage Oriented Middleware (MOM)
MQSeries
51» Beispiele » MQSeriesMessage Oriented Middleware (MOM)
MQSeries• Programmierschnittstelle MQI
MQCONN – mit dem Queue-Manager verbinden MQDISC – vom Queue-Manager trennen MQOPEN – Message Queue öffnen MQCLOSE – Message Queue schließen MQGET – Lesen aus Message Queue MQPUT – Schreiben in Message Queue MQPUT1 – Öffnen, Schreiben & Schließen MQBEGIN – Transaktion beginnen MQBACK – Transaktion zurücknehmen MQCMIT – Transaktion bestätigen MQINQ – Attribute eines MQ-Objekts abfragen MQSET – Attribute eines MQ-Objekts setzen
52» Beispiele » MQSeriesMessage Oriented Middleware (MOM)
ZusammenfassungFragen?
53» EndeMessage Oriented Middleware (MOM)
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.
54» Ende » ZusammenfassungMessage Oriented Middleware (MOM)
55