JMS Java Message Service

Werbung
JMS
Java Message Service
TK3 - WS03/04
Dipl.-Ing. Erwin Aitenbichler
Abt. Telekooperation
TU Darmstadt
1
JMS: Java Message Service
• Messaging
– Lose gekoppelte verteilte Kommunikation
RMI: Eng gekoppelt
– Sender und Empfänger unabhängig:
• Sender sendet Message an Destination
• Receiver holt Message von Destination
• Müssen nicht gleichzeitig verfügbar sein
– Bei Kommunikation gemeinsam:
• Message Format
• Destination
• JMS API
– „Common set of interfaces and associated semantics“
– Implementierungen: Sun J2EE, SwiftMQ,
iBus, MQSeries, SonicMQ, Weblogic, OpenJMS, ...
2
JMS: Transparenz
• Messaging
– Peer-to-peer-Kommunikation zw. Clients
– Client <-> Messaging System
– Abstrakte Sicht des Client:
Client
Client
Client
Messaging
System
Client
3
JMS: Transparenz
• Messaging
– Peer-to-peer-Kommunikation zw. Clients
– Client <-> Messaging System
– Dahinter z.B.:
Client
Client
Client
Msg. SSL Msg.
Router
Router
Msg.
Router
Client
Messaging
System
4
JMS: Begriffe
• Begriffe
– Message: Informationsträger für Kommunikation
zwischen Clients
– JMS-Client: Sendet/empfängt Messages
– JMS-Provider
• Implementiert JMS Interfaces
• Admin- & Control-Werkzeuge
¾ Trennung von Anwendungslogik und Admin/Control!
– Administered Objects
• Typen: Destination, Connection Factory
• Werden mit Admin-Werkzeugen erstellt und
bearbeitet
• Programm erhält AOs über JNDI-Lookup
(Java Naming and Directory Interface)
5
JMS: Messaging Domains
• Point-to-point
send
Sender
(consume)
receive
Empfänger
message
•
•
•
•
•
Queue
acknowledge
Destination = Queue
Jede Nachricht (message) hat einen Empfänger (consumer)
Empfänger bestätigt Erhalt der Nachricht (acknowledge)
Keine Zeitabhängigkeiten zw. Sender und Empfänger
Queue speichert Nachrichten (persistent), bis sie
• vom Empfänger gelesen wird
• nach einem Zeitlimit abläuft (expire)
6
JMS: Messaging Domains
• Publish/Subscribe
send
Sender
Sender
Sender
subscribe
Topic
receive
Empfänger
acknowledge
Empfänger
• Destination = Topic
• Empfänger erhält nur Nachrichten, so lange der Prozess
existiert.
7
JMS: Messaging Domains
• Publish/Subscribe
– Durable Subscribers
send
Topic
Queue
Empfänger
Sender
Sender
Sender
Queue
Empfänger
• Erzeugen: session.createDurableSubscriber()
• Subscriber wird über Name (und Topic) identifiziert
• Speicherung der Nachrichten ähnlich PTP
8
JMS: Durable Subscribers
• Nondurable Subscribers/Subscriptions
• Durable Subscribers/Subscriptions
9
JMS: Subskriptions-Mechanismen
• Channel-based Subscription (=Topic-based)
– Abonnieren eines Kanals (Channel, Topic)
– Anwendung schickt Nachrichten explizit an bestimmten Kanal
– Messaging-System hat keine Kenntnis über den Aufbau von
Nachrichten, nur Kanal-Name
– Keine Wechselwirkungen zwischen unterschiedlichen Kanälen
– Vergleichbar mit IP Multicast
• Erweiterung: Topic Hierarchies (SwiftMQ)
• <roottopic>.<subtopic>.<subsubtopic>
– Nachrichten werden an alle adressierten Knoten und alle
Unterknoten publiziert
• iit.sales -> iit.sales.US, iit.sales.EU
– Ein Abonnement bewirkt, dass Nachrichten an den aktuellen
Knoten, alle übergeordneten Knoten und alle untergeordneten
Knoten empfangen werden:
• Subskription von iit.sales
• empfängt auch von: iit, iit.sales, iit.sales.US, iit.sales.EU
• aber nicht von: iit.projects
– Abonnent erhält Nachricht nur einmal
10
JMS: Subskriptions-Mechanismen (2)
• Subject-based Subscription
– Eingeschränkte Form von Content-based Subscription
– Nachrichten besitzen neben dem opaken Inhalt eine Reihe
von strukturierten Attributen
– Attribute bestimmen die Empfänger
– Ein Abonnement drückt das Interesse an einem
bestimmten Thema in Form von Ausdrücken aus, die auf
diesen Attributen ausgewertet werden
– Subject ist
• Liste von Strings (TIB/Rendezvous, JEDI)
• Properties: Typisierte Schlüssel/Wert-Paare (JMS)
– Abonnement ist
• (Eingeschränkte Form von) regulären Ausdrücken auf
Strings (TIB, JEDI)
• (Eingeschränkte Form von) SQL92 Queries (JMS)
– Filterung wird im Router-Netz vorgenommen!
11
JMS: Objekte
12
Transactions
• JMS Local Transactions
• Lokal zwischen Client und Service Provider
• Erzeugen von transacted Sessions:
• connection.create...Session(true, 0)
• Parameter ack-Modus hat hier keine Bedeutung
13
J2EE: Installation
• Download
– http://java.sun.com/j2ee
– Lokale Kopie auf TK-Server; siehe Homepage der Übung
• Installation auf ultra*: (getestet auf ultra10)
– cd ~
– tar xvf /home/erwin/tk1/j2sdkee1.3.1-work.tar
• Environment
– JAVA_HOME=/usr/j2se
– PATH=$PATH:~/j2sdkee1.3.1-work/bin
– CLASSPATH=~/j2sdkee1.3.1-work/lib/j2ee.jar:.
14
J2EE: Anmerkungen
• Starten
– j2ee –verbose
• Admin-Tool
– j2eeadmin
• Wenn das Programm ohne Parameter gestartet wird,
dann werden die möglichen Optionen ausgegeben
• Auflisten der Queues und Topics
– j2eeadmin –listJmsDestination
• Anlegen eines Topics
– j2eeadmin –addJmsDestination <name> topic
15
Links
• JMS-Tutorial und API-Dokumentation
– In der Dokumentation von J2EE
– http://java.sun.com/products/jms/
• Mirror
– http://nibbler.tk.informatik.tu-darmstadt.de/docs
16
Herunterladen