# 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.

## 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:

### 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.