Nachrichtenübermittlungsmuster

Nachrichtenübermittlungsmuster (Messaging Patterns) sind eine Teilmenge der Entwurfsmuster aus dem Bereich der Softwareentwicklung, die der Kommunikation zwischen Softwareprodukten dienen. Sie befassen sich mit Erstellung, Weiterleitung und Umwandlung von Daten in Form von Nachrichten, inklusive der dazu benötigten Nachrichtenkanäle und Nachrichtenendpunkte, sowie Komponenten für die Systemverwaltung. Nachrichtenübermittlungsmuster wurden von Gregor Hope und Bobby Woolf im Buch Enterprise Integration Patterns beschrieben.[1]

Verschiedene Nachrichtenübermittlungsmuster

Für Entwurfsmuster gibt es keine abschließende Liste, sie können von jedem frei definiert werden. Muster werden verwendet, wiederkehrende Probleme mit erprobten Mitteln zu lösen. Gregor Hohpe und Bobby Woolf teilen Nachrichtenübermittlungsmuster wie im Folgenden dargestellt ein:[2]

Integrationsmöglichkeiten (Integration Style)

Die Muster aus dem Bereich der Integrationsmöglichkeiten beschreiben, wie Systeme in bestehende Systeme eingebunden werden können. Zu den Mustern für die Integration zählen Dateitransfer (File Transfer), Gemeinsame Datenbank (Shared Database), Aufruf entfernter Prozess (Remote Procedure Invocation) und Nachrichtenübermittlung (Messaging)

Nachrichtenerzeugung (Message Construction)

Nachrichten beginnen ihren Lebenszyklus, indem sie erzeugt werden. Die Nachrichtenerzeugung beschreiben verschiedene Muster, nach denen Nachrichten erzeugt werden. Typische Vertreter sind ereignisgetriebene Erzeugung oder Erzeugung als Antwort auf eine Anfrage (Request-Reply).

Nachrichtenkanäle (Messaging Channels)

Beschreibt die Muster, nach denen die zuvor erzeugten Nachrichten zu einem oder mehreren Empfängern gelangen.

Nachrichtenkanäle können nach verschiedenen Gesichtspunkten gestaltet sein:

  • Punkt-Zu-Punkt-Kanal: Ein Sender schickt an genau einen Empfänger.
  • Nachrichtenkanal: Ein Empfänger (von mehreren) erhält die Nachricht.
  • Publisher-Subscriber-Kanal: Alle interessierten Empfänger bekommen die Nachricht vom Sender zugestellt
  • Message Bus: Die Nachricht wird auf über eine Middleware auf einem Nachrichtenbus bereitgestellt, die Zustellung an Empfänger wird von der Middleware sichergestellt.
  • Datatype Channel: Für jede Art von Nachricht gibt es einen eigenen Nachrichtenkanal.

Die Zustellung kann garantiert sein oder die Nachrichten können verfallen.

Nachrichtenweiterleitung (Message Routing)

Nachrichten müssen nicht zwingend direkt vom Sender zum Empfänger übertragen werden. Es gibt verschiedene Muster, wie die Nachrichten auf dem Weg geleitet, verändert, angereichert (z. B. durch einen Aggregator) oder gefiltert werden.

Nachrichtenumwandlung (Message Transformation)

Wird eine Nachricht über mehrere Nachrichtenkanäle übertragen, so ist es unter Umständen nötig, die Nachricht zu verpacken, sie in kleinere Teile zu zerteilen oder die Daten anderweitig anzupassen.

Nachrichtenendpunkte (Messaging Endpoints)

Der Aufbau der Empfänger der Nachricht, üblicherweise Consumer oder Sink bezeichnet, wird ebenfalls durch eine Gruppe von Mustern beschrieben.

Systemverwaltung (System Management)

Für die Implementierung des Nachrichtenübertragungskanals sowie zur Unterstützung des Betriebs durch Systemadministratoren existieren verschiedene Muster.

Einzelnachweise

  1. Gregor Hohpe, Bobby Woolf: Enterprise Integration Patterns. Designing, Building and Deploying Messaging Solutions. Addison-Wesley, Boston 2003, ISBN 0-321-20068-3 (englisch). 
  2. Gregor Hohpe, Bobby Woolf: Enterprise Integration Patterns. Messaging Patterns, abgerufen am 5. Dezember 2020 (englisch).
VD
Entwurfsmuster
Erzeugungsmuster

Abstrakte Fabrik | Erbauer | Fabrikmethode | Prototyp | Singleton | Multiton | Objektpool

Strukturmuster

Adapter | Brücke | Decorator | Fassade | Fliegengewicht | Kompositum | Stellvertreter

Verhaltensmuster

Beobachter | Besucher | Interpreter | Iterator | Kommando | Memento | Schablonenmethode | Strategie | Vermittler | Zustand | Zuständigkeitskette | Interceptor | Nullobjekt | Protokollstapel

Muster für objektrelationale Abbildung

Datentransferobjekt | Table Data Gateway | Row Data Gateway | Active Record | Unit of Work | Identity Map | Lazy Loading | Identity Field | Dependent Mapping | Embedded Value | Serialized LOB | Inheritance Mapper | Metadata Mapping | Query Object | Command-Query-Responsibility-Segregation

Nachrichtenübermittlungsmuster

Message | Command Message | Document Message | Event Message | Request-Reply | Return Address | Correlation Identifier | Message Sequence | Message Expiration | Format Indicator | Message Channel | Point-to-Point Channel | Publisher-Subscriber Channel | Datatype Channel | Invalid Message Channel | Dead Letter Channel | Guaranteed Delivery | Channel Adapter | Messaging Bridge | Message Bus | Pipes-and-Filters | Message Router | Content-based Router | Message Filter | Dynamic Router | Recipient List | Splitter | Aggregator | Resequencer | Composed Message Processor | Scatter-Gather | Routing Slip | Process Manager | Message Broker | Message Translator | Envelope Wrapper | Content Enricher | Content Filter | Claim Check | Normalizer | Canonical Data Model | Message Endpoint | Messaging Gateway | Messaging Mapper | Transactional Client | Polling Consumer | Event-driven Consumer | Competing Consumers | Message Dispatcher | Selective Consumer | Durable Subscriber | Idempotent Receiver | Service Activator | Control Bus | Detour | Wire Tap | Message History | Message Store | Smart Proxy | Test Message | Channel Purger

Andere

Application Controller | Business Delegate | Data Access Object | Dependency Injection | Extension Interface | Fluent Interface | Inversion of Control (IoC) | Lock | Model View Controller (MVC) | Model View Presenter (MVP) | Model View Update (MVU) | Model View ViewModel (MVVM) | Page Controller | Registry | Remote Facade | Repository | Service Locator | Session State | Table Module | Template View | Threadpool | Transaction Script | Transform View | Two-Step View | Value Object