Java Persistent Message Queuing (JPMQ)

Zuverlässige Message Oriented Middleware - Services mit der asynchronen Kommunikation basieren auf Persistenten Warteschlangen. Solche Warteschlangen realisiren idR. nur Basiskonzepte wie Dequeue und Enqueue und ggf. ein Paar weitere. Die weitentwickelte moderne Applikationssystme erfordern auch neue, erweiterte Funktionen bei den Warteschlangen. JPMQ ist eine Implementierung dieser sog. Advanced Queuing Functionality.

Advanced Queuing Functionality

Komplexe Nachrichtentypen (Message Type)

Heutige Applikationen werden nach OO Prinzipien entworfen. Diese spiegelt sich auch in der Datenübertragugnstechniken. Anstatt ByteStreams zu übertragen sind die strukturierte Datentypen angemessen. Das heißt QS ist sich der Struktur der gehaltenen Daten bewust. In JPMQ wird dieses durch strickte Typisierung der Nachrichten erreicht. Dabei muss JPQM das Typensystem bereitstellen.
FIXME (Bild des Metamodels einfügen)
Beispielhafte Nachrichtentyp (message type) Definition:

DEFINE MESSAGETYPE OrderMessage;
  NODE order;
    id: IDENT; date: DATE; lines: REFERENCE TO order_line;
  END;
  NODE order_line;
    line_no: INTEGER; amout: INTEGER; price: REAL; item: REFERENCE TO item;
  END;
  NODE item;
    id: IDENT; name: STRING; ean: INTEGER;
  END;
  ROOT order;
END;

Automatische Prioritätsfestlegung

Wenn also die interne Struktur der Nachrichten bekannt ist, kann diese auch einfach durchforstet werden. So kann JPMQ automatisch Priorität einer Nachricht anhand deren Struktur zuweisen, wenn kein explizieter Wert beim Einlagern(Enqueue) mitgegeben wurde. Der Prioritätswert wird dabei mit der priority calculation function (PCF) ausgewertet. Die PCF wird in OQL-ähnlicher Sprache definiert 1). PCF wird bei der Einlagerung kalkuliert und liefert einen Wert vom Typ “real”. Dieser Wert wird immer mit der Warteschlage(Queue) und dem MessageType assoziiert.

Aplikationsspezifische Dequeue-Reihenfolge

JPMQ ermoglicht die Festlegung von aplikationsspezifischen, inhaltsbasierten Dequeue-Reihenfolgen. Anders ausgeduckt heißt es, daß die lesende Applikation die Reihenfolge der zu entfernenden(dequeue) Nachrichten(Messages) festlegen kann. Dies wird ermöglicht durch die Einführung einer neuen Dequeue-operation, welche eine inhaltsbasierte “ordering function” (OF) akzeptiert. OF ist konzeptuell ähnlich der PCF, ausser das OF dynamich bereitgestellt und ausgefürt wird um die Prioritäten aller Nachrichten eines MessageTypes festzulegen.

Selektive Dequeue Operationen

Oft arbeiten die Aplikationen mit nahcrichten welche einen bestimmten Predikat2) erfülen. In gewönlichen MQS3) mussen solche Applikatione trotzden alle Nachrichten empfangen und analysieren und nicht erwünschte wieder in die Warteschlange zurückstellen. Ausser verschidenen sofort denkbaren Nachteilen dieses Umstandes ist noch ein zusätliches zu betrachten: Die Operationen enqueue und equeue verden in Transaktionen Abgewickelt, so ist Concurency4) in vielen Fällen eingeschränkt. Die lösung basiert auf selective dequeue. JPMQ implementiert selective dequeue, welche einen “selection predicate” (SP) von der Anwendung erwartet. SP wird auf einem bestimmten Message Type definiert und wird bei der dequeue Operation ausgeführt. Natürlich kann OF und SP kombiniert werden.

Isolationseigenschaft von JPMQ

JPMQ Systemarchitektur

Links

1) Object Data Standard, http://www.odmg.org/
2) Bedingung
4) Sieheacid
de/middleware/jpmq.txt · Last modified: %2008/%04/%26 %13:%Apr by aho
Translations of this page:
chimeric.de = chi`s home Creative Commons License Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0