Nachrichtenwarteschlange versus Pub/Sub
Nachrichtenwarteschlangen verwenden ein Punkt-zu-Punkt-Messaging-Muster, bei dem eine Anwendung (der so genannte Sender) eine Nachricht an die Warteschlange sendet und eine andere Anwendung (der so genannte Empfänger) diese Nachricht aus der Warteschlange abruft und verarbeitet. Es sollte eine eng gekoppelte Eins-zu-Eins-Beziehung zwischen dem Sender und dem Empfänger bestehen und jede Nachricht sollte nur einmal verarbeitet werden.
Wenn Ihre Anwendungen erfordern, dass Nachrichten an mehrere Empfänger verteilt werden, können entweder mehrere Nachrichtenwarteschlangen miteinander kombiniert oder ein Messaging-Modell vom Typ Publish/Subscribe (Pub/Sub) verwendet werden.
Beim Pub/Sub-Messaging wird die Anwendung, die die Nachricht erzeugt, als Veröffentlichungskomponente (Publisher) bezeichnet, und die Anwendungen, die die erzeugte Nachricht lesen und verarbeiten, werden Subskribenten (oder Abonnenten) genannt. Jede Nachricht wird unter einem bestimmten Thema (Topic) veröffentlicht und jede Anwendung, die dieses Thema abonniert, erhält ein Exemplar aller unter diesem Thema veröffentlichten Nachrichten.
Die meisten Messaging-Middleware-Lösungen unterstützen sowohl das Nachrichtenwarteschlangenmodell (Punkt-zu-Punkt-Muster) als auch das Pub/Sub-Messaging-Modell.
Nachrichtenwarteschlange versus Nachrichtenbus
Ein Nachrichtenbus – eine Art Enterprise Service Bus (ESB) – ermöglicht den Services den ubiquitären Zugriff auf Daten und stellt gleichzeitig sicher, dass sie innerhalb einer verteilten Systemarchitektur entkoppelt und unabhängig voneinander funktionsfähig bleiben. Beim Einsatz eines Nachrichtenbusses müssen alle Services oder Anwendungen einheitliche Datentypen, einen einheitlichen Befehlssatz und einheitliche Kommunikationsprotokolle verwenden (die jedoch in unterschiedlichen Sprachen geschrieben sein können). Die Consumer können bestimmen, wie sie Nachrichten verwenden.
Wenn entkoppelte Anwendungen über einen Nachrichtenbus kommunizieren sollen, müssen die Nachrichten so umgesetzt werden, dass sie alle denselben Typ aufweisen. Im Gegensatz dazu werden Nachrichten von Nachrichtenwarteschlangen unabhängig davon befördert, ob sie vom gleichen Typ sind oder unterschiedliche Typen aufweisen.
Nachrichtenwarteschlange versus Web-Services
Anwendungen können direkt über Web-Services oder APIs kommunizieren, die auf Standardprotokollen wie SOAP (Simple Object Access Protocol) oder HTTP basieren, anstatt über zwischengeschaltete Messaging-Middleware. Die Verwendung von Web-Services in verteilten Systemen ist gängig. Diese Services sind relativ einfach und ohne großen Aufwand zu implementieren, was sie in bestimmten Anwendungsfällen und Szenarien zu einer funktionsfähigen Alternative zu Nachrichtenwarteschlangen macht.
Anders als Nachrichtenwarteschlangen können Web-Services jedoch nicht die Zustellung von Nachrichten garantieren. Für den Fall, dass der Server ausfällt oder die Verbindung fehlschlägt, müssen Sie daher dafür sorgen, dass eine entsprechende Funktionalität zur Behandlung des Fehlers im Client vorhanden ist. Web-Services verfügen auch nicht über Pub-/Sub-Verteilungsmodelle. Messaging-Middleware bietet eine größere Fehlertoleranz und ist besser in der Lage, ein hohes Aufkommen an Datenverkehr oder Aktivitätsspitzen zu bewältigen.
Weitere Informationen dazu, wenn Sie APIs, wann Sie Messaging und wann Sie eine Kombination aus beidem verwenden sollten, enthält der Artikel „An introduction to APIs and messaging“.
Nachrichtenwarteschlange versus Datenbanken
In bestimmten Fällen können Datenbanken als Alternative zu Nachrichtenwarteschlangen verwendet werden; in den meisten Fällen dienen sie jedoch anderen Zwecken und sind nicht ohne weiteres austauschbar. Datenbanken werden am häufigsten zur Speicherung verwendet und ermöglichen Ihnen, wiederholt auf dieselben Informationen zuzugreifen. Nachrichtenwarteschlangen können nicht zu Speicherzwecken verwendet werden. Sobald eine Nachricht verarbeitet (konsumiert) worden ist, wird sie aus der Warteschlange gelöscht.
Es ist zwar möglich, eine Datenbank mit Funktionalität auszustatten, die der einer Nachrichtenwarteschlange ähnelt, aber der Programmieraufwand dafür ist hoch und es sind umfangreiche und fundierte Kenntnisse erforderlich. Datenbanken können lediglich zur Replikation einfacher Warteschlangenstrukturen verwendet werden und sind nicht für größere Anwendungen skalierbar.
Weitere Informationen zu Datenbanken und ihrer Funktionalität enthält der Blogbeitrag „A Brief Overview of the Database Landscape“.