it-swarm.com.de

Was ist ein MQ und warum möchte ich es verwenden?

In meinem Team bei der Arbeit verwenden wir häufig die IBM MQ-Technologie für die anwendungsübergreifende Kommunikation. Ich habe kürzlich in den Hacker News und anderen Orten über andere MQ-Technologien wie RabbitMQ gesprochen. Ich habe ein grundlegendes Verständnis dessen, was es ist (ein häufig überprüfter Bereich zum Einfügen und Abrufen von Nachrichten), aber was möchte ich wissen, wo genau ist es gut? Woher weiß ich, wo und wann ich es verwenden möchte? Warum bleiben Sie nicht einfach bei rudimentäreren Formen von Interprozessnachrichten?

32
daveslab

Alle bisherigen Erklärungen sind zutreffend und auf den Punkt gebracht - aber es könnte etwas fehlen: Einer der Hauptvorteile des Message Queuing: die Widerstandsfähigkeit.

Stellen Sie sich folgendes vor: Sie müssen mit zwei oder drei anderen Systemen kommunizieren. Heutzutage sind Web-Services ein gängiger Ansatz, der in Ordnung ist, wenn Sie sofort Antworten benötigen.

Allerdings: Webdienste können ausfallen und nicht verfügbar sein - was machen Sie dann? Das Einfügen Ihrer Nachricht in eine Nachrichtenwarteschlange (die auch eine Komponente auf Ihrem Computer/Server hat) funktioniert normalerweise in diesem Szenario - Ihre Nachricht wird gerade nicht zugestellt und somit nicht sofort verarbeitet -, aber später, wenn das andere Seite des Dienstes kommt wieder online.

In vielen Fällen ist die Verwendung von Nachrichtenwarteschlangen zum Verbinden unterschiedlicher Systeme eine zuverlässigere und robustere Methode, Nachrichten hin und her zu senden. Es funktioniert nicht für alles (wenn Sie den aktuellen Aktienkurs für MSFT wissen möchten, ist es vielleicht nicht die beste Idee, diese Anfrage in eine Warteschlange zu stellen), aber in vielen Fällen, wie zum Beispiel eine Bestellung In der Nachrichtenwarteschlange Ihres Lieferanten funktioniert es sehr gut und kann dazu beitragen, einige der Zuverlässigkeitsprobleme bei anderen Technologien zu lösen.

54
marc_s

MQ steht für Messaging-Warteschlange.

Hierbei handelt es sich um eine Abstraktionsebene, die es mehreren Prozessen (wahrscheinlich auf verschiedenen Maschinen) ermöglicht, über verschiedene Modelle (z. B. Punkt-zu-Punkt, Publizieren, Abonnieren usw.) zu kommunizieren. Je nach Implementierung kann es für Dinge wie garantierte Zuverlässigkeit, Fehlerberichterstattung, Sicherheit, Ermittlung, Leistung usw. konfiguriert werden. 

Sie können das alles manuell mit Sockets machen, aber es ist sehr schwierig.

Zum Beispiel: Angenommen, Sie möchten Prozesse kommunizieren, aber einer von ihnen kann in der Mitte sterben und später wieder verbunden werden. Wie würden Sie sicherstellen, dass Zwischenmitteilungen nicht verloren gingen? MQ-Lösungen können das für Sie tun.

13
Uri

Message Queueuing-Systeme sollen Ihnen mehrere Boni bringen. Zu den wichtigsten gehören das Monitoring und das Transaktionsverhalten.

Das Transaktionsdesign ist wichtig, wenn Sie vor Ausfällen wie Stromausfall geschützt werden möchten. Stellen Sie sich vor, Sie möchten ein Bankensystem über Geldabhebungen an Geldautomaten informieren, und dies muss genau einmal pro Anfrage gemacht werden, unabhängig davon, welche Server vorübergehend ausgefallen sind. Mit MQ-Systemen können Sie Transaktionen über mehrere Datenbanksysteme, MQ-Systeme und andere Systeme hinweg koordinieren.

Es ist unnötig zu erwähnen, dass solche Systeme im Vergleich zu Named Pipes, TCP oder anderen nicht-transaktionalen Tools sehr langsam sind. Wenn eine hohe Leistung erforderlich ist, können Sie nicht zulassen, dass Ihre Nachrichten über die Festplatte geschrieben werden. Stattdessen wird Ihr Design komplizierter - für exotische, zuverlässige und schnelle Kommunikation, die den Designer in wirklich nicht triviale Tricks versetzt.

In MQ-Systemen können Benutzer normalerweise den Inhalt der Warteschlange beobachten, Plugins schreiben, Warteschlangen löschen usw.

7

MQ steht einfach für Message Queue.

Sie würden eine verwenden, wenn Sie eine interprozess-/plattformübergreifende/anwendungsübergreifende Nachricht zuverlässig senden müssen, die nicht zeitabhängig ist.

Die Nachrichtenwarteschlange empfängt die Nachricht, versetzt sie in die richtige Warteschlange und wartet, bis die Anwendung die Nachricht abgerufen hat, wenn sie fertig ist.

2
Justin Niessner

hinweis: Webservices können ausfallen und nicht verfügbar sein - was machen Sie dann? Als Erweiterung dazu; Was ist, wenn Ihr lokales Netzwerk und Ihr lokaler PC ebenfalls ausgefallen ist? Während Sie darauf warten, dass das System die abhängigen bereitgestellten Systeme an einem anderen Ort wiederherstellt, muss auf diese Daten ein alternativer Datenstrom zugreifen. Andernfalls ist diese Antwort möglicherweise nicht gut genug für die heutigen und sehr bald zukünftigen Anforderungen an das Internet der Dinge (IOT). 

wenn Sie eine parallele, nichtflüchtige Speicherung verschiedener FIFO - Streams (zumindest an einem bestimmten Punkt entlang der Signalkette) benötigen, verwenden Sie einen FPGA- und einen FRAM-Speicher. FRAM läuft mit Taktfrequenz und FPGA-Geräte können im laufenden Betrieb neu programmiert werden, wobei viele unabhängige parallele Datenströme erforderlich sind (natürlich innerhalb festgelegter Einschränkungen). 

0
Ron Harding

Nachrichtenwarteschlangen bilden die Grundlage für viele der Muster, die im klassischen Buch "Enterprise Integration Patterns" und in website beschrieben sind.

0
SteveD