Top Banner
Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität Halle-Wittenberg Hauptseminar - Halle - 05.07.22
65

Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

Apr 06, 2016

Download

Documents

Greta Maier
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

Aufbau Integrierter Informationssysteme

Nachrichtenbasierte Kommunikation

Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann

Martin-Luther-Universität Halle-Wittenberg

Hauptseminar - Halle - 26.04.23

Page 2: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 2

Gliederung

1. Message Queuing

2. Entwurfsmuster für MQS

3. Oracle Advanced Queuing

4. JavaMessagingService

Page 3: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 3

Einleitung

• Middleware bildet zusätzliche Sicht zwischen Hardware/Betriebssystem und Anwendungssicht

• Aufgabe:– Verbergen der Unterschiede der einzelnen Plattformen– System aus Anwendungssicht homogen erscheinen zu lassen

• Ansatz ist Message Queuing Systeme (MQS)

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 4: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 4

Nachrichtenaustausch mit Queues

• Kommunikation zwischen Anwendungen über Austausch von Nachrichten (Messages), die in Queue gestellt bzw. entnommen werden

• Programme kommunizieren über ein Netzwerk ohne private und logische Verbindung

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 5: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 5

Nachrichtenaustausch mit Queues

Einwegkommunikation:

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 6: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 6

Nachrichtenaustausch mit Queues

Zweiwegkommunikation:

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 7: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 7

• weiteres Merkmal:

– asynchrone Kommunikation

• 4 Queues sind notwendig für Client-Server-Anwendungen:

– Request-Queue– Reply-Queue– Dead-Letter-Queue (clientseitig)– Dead-Letter-Queue (serverseitig)

Nachrichtenaustausch mit Queues

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 8: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 8

• Zwei Modelle beim Einsatz von MQS

– Point-to-Point– Publish-and-Subscribe

Nachrichtenaustausch mit Queues

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 9: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 9

Netzwerkhandling

• Netzwerkhandling wir vor den Anwendungen versteckt

• MQS:

- regelt Kommunikation über das Netz

- kann auf auftretende Fehler reagieren

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 10: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 10

Kommunikationsablauf im Detail

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 11: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 11

Queue Manager und Message Queuing Interface

• mindestens ein Queue Manager (QM)pro Rechner bzw. Netzwerkknoten

• bei einzelnen Knoten

- „normalen“ Rechner

- „thin clients“ Rechner

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 12: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 12

Queue Manager und Message Queuing Interface

• Message Queuing Interface(MQI) für die Kommunikation zwischen Anwendung und QM

• besteht aus einer Menge von „Calls“ (Aufrufen)

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 13: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 13

Transaktionsunterstützung

• drei Stufen der Transaktionsunterstützung:

- interne Transaktionen

- Unterstützung externe Transaktionmanager

- Rolle eines Transaction Coordinators

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 14: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 14

Vergleich MessageQueuing mit anderen Middlewaretechnologien

CORBA

•verbreitete Technik – ohne grossen Aufwand einsetzbar•problematisch bei Auftreten eines Fehlers

Verteilte Transaktionsverarbeitung

•auftretende Fehler werden automatisch korrigiert•hohe Kosten und schmales Spektrum der unterstützenden Systeme

MQS

• „ die goldene Mitte“• übernimmt das Netzwerkhandling• Entkopplung der Anwendungen• problematisch bei stark zeitbezogenen Systemen

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 15: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 15

Vorteile von Messaging und Queuing

• freie Kapazitäten entstehen

• einfache Verwendung des Interface

• keine Beschränkung der Anwendungsarchitektur

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 16: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 16

Möglichkeiten des Message Queuing

A

Q1

DCB

Q2

Q3

E F

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

RQ2

RQ1

• Keine logische Verbindung zwischen E und F• E schreibt Message in Queue (put)• F nimmt Message aus Queue (get)• Point-to-Point Kommunikation

One-to-one Relationship

• E sammelt die Ergebnisse von B, C und D • B, C, D können z.B. Client von Server- programm E sein (Subscriber)• Messagebearbeitung nach FIFO oder Prioritäten

Many-to-one Relationship

• A verteilt Arbeit auf B, C und D • B, C, D können parallel arbeiten (load balancing)• schnellere Bearbeitung bei sequen- tieller Abfolge• Publish & Subscribe

One-to-many Relationship

• E sendet nur Request an F • keine Rückmeldung des Program- mes, daß die Message aus der Queue nimmt• Bsp.: Fire-and-Forget

One-way Communication

• C veranlasst E zur Rückmeldung (Reply)• können Ergebnisse einer Operation sein oder Bestätigungen

Two-way CommunicationFlexibles Systemdesign

• Keine Einschränkungen in der Applikationsstruktur

Page 17: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 17

MessageAufbau einer Message

Message Describtor

Application Data

Message Identifier (24 Byte String)

Correlation Identifier (24 Byte String)

• Eigentliche Nachricht• 4 MB – 100 MB

Queues• Target Queue• Reply Queue (opt.)

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Attribute• date• time• priority• persistance• expiry date

Page 18: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 18

Attribute einer Queue

Queue

• Name • Max. Anzahl von Messages• Max. Messagegröße• Voreingestellte Art der Messages (persistent oder transient)

Eindeutige Identifizierung der Queue durch andere Komponenten des Systems

Einschränkungen / Vorein-stellungen für Programme, die auf Queue zugreifen

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 19: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 19

LQ

QMB

TQA

TQC

Arten von Queues

LQ

QMA

TQB

TQC

N E T Z W E R K

Applikation A Applikation B Applikation C

LQ

QMC

TQA

TQB

DQ AQ IQ

Applikation D

DLQ

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Local Queues• alle Queues, die dem QM zugeordnet sind auf den die App. zugreift• App. schreibt in LQ• App. Liest aus LQ

Remote Queues• alle Queues, die nicht lokal sind• App. weiß phys Ort nicht• QM übernimmt Zustellung

Transmission Queues• Zwischenqueue beim Senden • Je 1 TQ für jeden remote QM• Remote QM liest aus TQ und schreibt in seine LQ

Dynamic Queues• autom. Beendigung beim Progr.ende • dynamische Erzeu- gung - permanent (überle- ben QM restart) - temporär

Alias Queues• dieselbe physische Queue • mehrere Programme Zugriff auf dieselbe Queue• Aufruf über versch. Namen (Definitionen)

Initiation Queues• QM schreibt in IQ wenn Bed. Einer LQ erfüllt ist • IQ triggert neue Applikation• App. handelt das auslösende Event

Dead-Letter Queues• Queue für unzustell- bare Nachrichten• Jeder QM hat DLQ• Gründe: - Zielqueue voll - Zielqueue ex. nicht - ...

Page 20: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 20

Client Server

Entwurfsmuster

Sende Anfrage

Erwarte Antwort

Lese Anfrage

Sende Ergebnis

Führe aus

Daten

Pseudosynchronous Inquiry

Request Message

Q1

Reply Message

Q2

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Kommunikation asynchron

• Client kann nicht weiterarbeiten bis Reply-Message eingetroffen• nur lesender Zugriff

Anfragen idempotent• wiederholt sich die Anfrage ändert sich das Ergebnis nicht• bei timeout: Wiederholung• einfaches Error-handling Reply Message:

Nicht persistentReply Queue:

Temporary Dynamic Queue

Request Queue:Standard Queue

Request Message:Nicht persistent Problem: Orphans

Page 21: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 21

Entwurfsmuster (2)

Client Server

Lese Anfrage

Sende Ergebnis

Führe aus

Daten

Asynchronous Inquiry

Request Message

Q1

Reply Message

Q2

Sende Anfrage

Arbeite weiter

Erhalte Antwort

Problem: Wie erfährt Client vom Eintreffen

der Reply-Message ?

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Kommunikation asynchron

• Client kann weiterarbeiten und muss nicht blockierend auf Reply- Message warten

Request ist Anfrage

• Daten des Servers bleiben unan- getastet• bei Fehler: Wiederholung

Page 22: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 22

Entwurfsmuster (3)

Client ServerSende Auftrag Lese Auftrag

Führe aus

Daten

Fire-and-forget Update

Request Message

Q1

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Änderung von Daten• Ankunft der Nachricht muss garan- tiert werden• keine Bestätigung der ausge- führten Änderungen

Anfragen nicht-idempotent

• evtl. Sicherstellung daß Nachricht nur einmal gesendet wird

Request Queue:Standard Queue

Request Message:Persistent (exactly one o.

at least one)

Page 23: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 23

Entwurfsmuster (4)

Client Server

Sende Auftrag

Erwarte Bestätigung

Lese Auftrag

Sende Ergebnis

Führe aus

Daten

Pseudosynchronous Update

Request Message

Q1

Reply Message

Q2

Problem: Bei Ausbleiben der Bestätigungkeine Info ob Update erfolgreich

verarbeite

Daten

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Anfragen sind Updates • Modifizierung von Daten• Client kann nicht weiterarbeiten bis Bestätigung eingetroffen

Anfragen nicht-idempotent

• Vermeidung unbeabsichtigter Wiederholungen ein und derselben Anfrage

Page 24: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 24

Entwurfsmuster (5)

Client Server

Lese Auftrag

Sende Ergebnis

Führe aus

Daten

Request Message

Q1

Reply Message

Q2

Sende Auftrag

Arbeite weiter

Bearbeite Bestätigung

Asynchronous Update with Acknowledgement

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Manipulation von Daten• Client erwartet Bestätigung• Asynchrone KommunikationAnfragen nicht-idempotent

• evtl. Sicherstellung daß Nach- richt nur einmal gesendet wird• durch Persistenz garantierte Nachrichtenübermittlung Reply Message:

Persistent (exactly one o. at least one)

Reply Queue:Permanent Dynamic

Queue

Request Queue:Standard Queue

Request Message:Persistent (exactly one o.

at least one)

Page 25: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 25

Beispiel: Oracle8i Advanced Queuing

• Oracle8i ist ein message-orientiertes System

• System hat Queues (Warteschlangen) implementiert

• Queues ermöglichen eine asynchrone Kommunikation

• Oracle8i stellt mit der Advanced Queuing Technologie eine message-queuing-Infrastruktur zur Verfügung, die vollständig in die Datenbank integriert ist

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 26: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 26

Vorteile der Advanced Queuing Technologie

• Backup/Recovery

• Unbegrenzte Messageanzahl

• Möglichkeit des Aufbaus eines Message-Warehouse

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 27: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 27

Nachrichtenverarbeitung

• Anwendung stellt die Nachricht mit der Enqueue-Operation in eine Warteschlange (Queue)

• berechtigte Anwendungen können nun zeitlich unabhängig mit einer Dequeue-Operation diese Nachricht entnehmen und verarbeiten

DEQUEUEENQUEUE

Message

QUEUE

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 28: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 28

Vorteile duch Benutzungvon Queues

• fehlertolerantere Systeme

• Anwendungen können nach Bereitstellung der Nachricht gleich weiterarbeiten

• Möglichkeit der Integration unterschiedlicher Anwendungssysteme

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 29: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 29

Queues in der Datenbank (1)

1. Single-Consumer-Queue

• jede Nachricht ist nur für eine Anwendung (Verbraucher) bestimmt

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 30: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 30

Queues in der Datenbank (2)

2. Multi-Consumer-Queue

• jede Nachricht kann für beliebig viele Verbraucheranwendungen bestimmt sein

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 31: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 31

Queues in der Datenbank (3)

3. Queue-to-Queue

• Message kann auch von einer Queue in eine andere Queue übertragen werden >> Propagation

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 32: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 32

Komponenten eines Oracle8i-AQ Systems

• System besteht aus 3 Komponenten

QT

Message-KopfMessage-Payload(Daten)

I. Queue-Tabellen

II. Queues

III. Messages

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 33: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 33

I. Queue-Tabellen• Speicherorte der Queues

Charakteristische Eigenschaften:

• Art der Datenstruktur, die eine Message besitzen kann

• Sortierung der Messages innerhalb der Queues

• Art der Queues, die innerhalb der Queue-Tabelle definierbar sind

• Gruppierung aller Nachrichten einer Transaktion

Erzeugt durch den Befehl:

DBMS_AQADM.CREATE_QUEUE_TABLE

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 34: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 34

II. Queues• Speicherorte für die einzelnen Nachrichten

Charakteristische Eigenschaften:

• Art der Queue (Normal, Exception, Non-Persistent)

• Maximale Anzahl von ´dequeue´-Wiederholungen im Fehlerfall

• Speicherzeit der Messages (nachdem eine Message verbraucht wurde)

Erzeugt durch den Befehl:

DBMS_AQADM.CREATE_QUEUE

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 35: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 35

III. Message

• Träger der relevanten Informationen, die über das Message-System übermittelt werden sollen

Besteht aus 2 Teilen

• Message-Kopf

>> enthält Informationen über die Nachricht

• Message-Payload

>> der Datenteil, in dem sich die Daten befinden

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 36: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 36

Operationen mit Queues (1)

ENQUEUE

• stellt eine Nachricht in die Warteschlange

Syntax:

DBMS_AQ.ENQUEUE (Queue_namePayload

Beispiel

DBMS_AQ.ENQUEUE (Queue_name => ´q1´,Payload => nachricht);

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 37: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 37

Operationen mit Queues (2)

DEQUEUE

• Operation, über die alle Benutzer eine Message aus einer Queue entnehmen können

Für eine ´dequeue´-Operation wird angegeben:

• die Queue, aus der die Message entnommen werden soll

• die ´dequeue´-Optionen

• Message-Eigenschaften

• der Datenbereich (payload)

• Message-Identifikation (message_id)

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 38: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 38

Operationen mit Queues (3)

BEISPIEL EINER DEQUEUE-OPERATION

DBMS_AQ.DEQUEUE (

QUEUE_NAME => ´q_1´,

DEQUEUE_OPTIONS => dequeue_opts,

MESSAGE_PROPERTIES => m_p,

PAYLOAD => nachricht,

MESSAGE_HANDLE => msg_h );

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 39: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 39

Operationen mit Queues (4)

DEQUEUE-OPTIONS

• Steuern der ´deque´-Operation

• wird angegeben welche Message verarbeitet werden soll

• wie eine Message verarbeitet werden soll

Remove-Mode

Browse-Mode

Locked-Mode

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 40: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 40

Operationen mit Queues (5)

DEQUEUE-OPTIONS (2)

• die Zugriffsposition innerhalb der Queue

First_message

Next_message

Next_transaction

• ob und wie lange eine ´dequeue´-Operation auf eine Message warten soll, falls diese in der Queue nicht vorhanden ist

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 41: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 41

Der Java Message Service

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 42: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 42

Java Message Service (JMS)

• Programmiersprachenbasierte MOM

• Unterstützt beide Kommunikationsmodelle

Publish/Subscript

Client1

Publishes

Msg

Client2

SubscribesDelivers

Msg

Topic

Client3

SubscribesDelivers

Msg-- Peer to Peer --

Client1 Client2

Queue Sends Consumes

Acknowledges

Msg Msg

DomainMessage Consumption

•Synchron•Asynchron

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 43: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 43

JMS API Architecture

Administrative Tool

JMS Client JMS Provider

JNDI Namespace

DCFBind

Lookup

Logical Connection

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 44: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 44

The JMS API Programming ModelConnection Factory

•Verbindungskonfigurations-parameter

•Client benutzt CF, um Verbindung zu JMS Provider zu kreieren

Connection• aktive Verbindung von Client zu JMS Provider•Authentität des Clients überprüft•Eindeutiger Client Identifier•Liefert ConnectionMetaDaten

Session•Produktion/Verbrauch von Nachrichten•Definiert Ordnungsrelation•Behält konsumierte Nachrichten, bis zur Bestätigung

Session(2)•Message Listener•Transcation

•Transacted Session•Non-transacted Session•Bsp.:Onlineshopping

Message Producer• zum Senden von Nachrichten an eine Destination

Message Consumer• zum Empfangen von Nachrichten einer Destination•Message Listener•Message Selector

Message• Format ist einfach, jedoch sehr flexibel •Für jedes Format auf jeder Plattform •3 Teile: Header

PropertiesBody

ConnectionFactory

Connection

Creates

MessageProducer Creates

Session

Creates

Destination

Sends To

Destination

Receives From

Message

Creates

MessageConsumerCreates

Administrative Objekte

Objekte im Programm

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 45: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 45

MessagesMessage

• Format ist einfach, jedoch sehr flexibel •Für jedes Format auf jeder Plattform •3 Teile: Header

PropertiesBody

HeaderPropertiesBody

Header Field Set ByJMSDestination send or publish method

JMSDeliveryMode send or publish method

JMSExpiration send or publish method

JMSPriority send or publish method

JMSMessageID send or publish method

JMSTimestamp send or publish method

JMSCorrelationID Client

JMSReplyTo Client

JMSType Client

JMSRedelivered JMS provider

------ Header -----

JMSMessageID• identifiziert Nachricht eindeutigJMSDestination• Queue/TopicAndere Felder enthalten z.B. Zeitstempel oder Prioritäten

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 46: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 46

MessagesMessage

• Format ist einfach, jedoch sehr flexibel •Für jedes Format auf jeder Plattform •3 Teile: Header

PropertiesBody

Header Properties Body

------ Properties -----

•Beschreibende Felder einer Nachricht read only• zusätzliche Informationen über Daten / Prozess, der sie kreiert hat•Syntax: property name: property value

•Optimierung der Kommunikation mit Queue/Topic (z.B. Selektionskriterien)

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 47: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 47

MessagesMessage

• Format ist einfach, jedoch sehr flexibel •Für jedes Format auf jeder Plattform •3 Teile: Header

PropertiesBody

HeaderPropertiesBody

------ Body -----

Message Type

TextMessageMapMessage

BytesMessageStreamMessag

eObjectMessage

Message

•Java Zeichenkette: java.lang.String

•Grund der Aufnahme: String Messages werden extensiv benutzt (XML basierte Nachrichten)

•<Name-Wert> Paar• Name – String Werte Java Basistypen• Sequenziell o. zufälligerZugriff über Namen• Reihenfolge ist nicht definiert

• Uninterpretierte Bytes• Universell einsetzbar

• Stream von Java Basistypen•Sequentiell gelesen• Serialisiertes Java Objekt

• Nichts• besteht aus Header und Properties• Nützlich wenn der Body nicht benötigt wird

Body Contains:

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 48: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 48

Übersicht zum BeispielprogrammInitialisierungsteil

Starten des JMS Providers

Kreieren der JMS adiministr-

ativen Objekte

Sender-Client-Programm

ConnectionFactory

Kreieren der

Connection

Kreieren der

Session

Kreieren der

Message

Schliessen der

Connection

Empfänger-Client-Programm

ConnectionFactory

Kreieren der

Connection

Kreieren der

Session

Empfangender

Message

Schliessen der

Connection

Kreieren des

MsgProd

Kreieren des

MsgCons

Beenden

Löschen der Queues

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 49: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 49

Beispielprogramm (Starten des Providers)

Beim Einsatz von J3EE 1.3 SDK, wird JMS im SDK mitgelifert

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 50: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 50

Beispielprogramm (Kreieren der JMS administrierten Objekte)

•Warteschlange muss zu erst im JNDI registriert werden•Geschieht mit dem J2EE Administrations Tool, oder einem Batch Skript auf dem Server

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 51: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 51

Beispielprogramm (Überprüfung der administrierten Objekte)

•Warteschlange muss zu erst im JNDI registriert werden•Geschieht mit dem J2EE Administrations Tool, oder einem Batch Skript auf dem Serverl

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 52: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 52

Sende-Client-Programm

Variablen Deklaration

•JNID InitialContext•jndi.properties

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 53: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 53

Sender-Client-ConnectionFactory

•QueueConnectionFactory ist als Standardfactory vorhanden

•Erstellung weitere Factorys mit Admintools:

•j2eeadmin -addJmsFactory jndi_name •queue j2eeadmin -addJmsFactory jndi_name topic

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 54: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 54

Sender-Client: Connection / Session

•Kreieren der Connection

•Kreieren der Session •MessageProducer wird erstellt

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 55: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 55

Sender-Client: Message kreieren

•Interface des MessageProducers•Senden einer non-text control message zeigt Ende der Messages an

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 56: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 56

Sender-Client: Connection schliessen

•Das Ende – Connection geschlossen

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 57: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 57

Empfänger-Client: Connection/Session starten

•MessageConsumer wird erstellt

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 58: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 58

Empfänger-Client: Message empfangen

•Nach der start Methode kann die receive Methode jederzeit benutzt werden

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 59: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 59

Löschen einer Queue

•Administrative Objekt „meineWarteschlange“ sollte nach Abschluss wieder aus dem Enterpriseserver entfernt werdenen

Message Queuing Entwurfsmuster Oracle Advanced Queuing JavaMessagingService

Page 60: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 60

Was haben wir gelernt?!

Page 61: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 61

Fazit

Not every DAD

(Distributed Application Development)

needs a MOM.

But many...

Page 62: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 62

NavigationZurück zu:Connection

Factory

Connection

Creates

MessageProducer Creates

Session

Creates

MessageConsumerCreates

Destination

Sends To

Destination

Receives From

Message

Creates

CFMessageC/S (S)C/S (E)

Page 63: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 63

Administrative Tool

JMS Client JMS Provider

JNDI Namespace

DCFBind

Lookup

Logical Connection

CF

Page 64: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 64

Nachteile MoM

• Kein echter Standard für die Programmierung mittels MoM

• Applikations-Daten einer Nachricht müssen vom Programmierer ein- und ausgepackt werden

• MQS kennt meist den Inhalt der Nachricht nicht, kann darauf keine Filter anwenden

• Schwer einsetzbar bei Programmen, die synchronen Ablauf haben

• MoM verbirgt die Kommunikation nicht

Page 65: Aufbau Integrierter Informationssysteme Nachrichtenbasierte Kommunikation Michael Schmidt, Jens Dietrich, Marco Schopp, Sven Dammann Martin-Luther-Universität.

© 2001 Sven Dammann, Jens Dietrich, Michael Schmidt, Marco Schopp 65

Vorteile MoM

Asynchron Ereignisgesteuert

• MoM fügt sich fließend in Programme mit asynchronen oder ereignisgesteuerten Ablauf ein

Skalierbarkeit / Verfügbarkeit

MoM skaliert sehr gut und führt zu einer höheren Ver- fügbarkeit des Gesamtsystems

Orts- / Migrationstransparent

• Dienste können während der Lebenszeit des Gesamt- systems ihren Ort verändern

Dynamisch

• Dienste können während der Lebenszeit des Gesamt- systems hinzugefügt werden

Quality of Service

• MoM bietet über Quality of Services u.a. die garantierte Auslieferung von Nachrichten