RabbitMQ— selektiv abrufen von Nachrichten aus einer Warteschlange
Ich bin neu RabbitMQ und Frage mich, für einen guten Ansatz, um dieses problem bin ich grübelte über. Ich möchte einen Dienst erstellen, der bekennt sich zu einer queue und zieht nur Nachrichten, die eine bestimmte Kriterien erfüllen; zum Beispiel, wenn ein bestimmter Betreff in der Nachricht.
Ich bin immer noch lernen über RabbitMQ, und war auf der Suche nach Tipps auf, wie man diesen Ansatz. Meine Fragen sind: wie kann der Verbraucher ziehen, die nur bestimmten Nachrichten aus der Warteschlange? Wie können die Hersteller setzen einen Betreff in die Nachricht (wenn das überhaupt der richtige Begriff?)
- Wenn das wirklich dein Verbraucher hat abonnieren Sie (nicht daran interessiert, Nachrichten, veröffentlicht werden, bevor das Abonnement), das Abo (und verbindlich mit der Auswahl der Regel) nicht zu einer vorhandenen Warteschlange aber zu einer bestehenden exchange (als beantwortet, unten).. Dann ist die Frage, der Wortlaut sollte geändert werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
RabbitMQ ist perfekt für diese situation. Sie haben eine Reihe von Optionen, zu tun, was Sie wollen. Ich schlage vor, Lesen Sie in der Dokumentation zum besseren Verständnis. Ich würde vorschlagen, dass Sie ein Thema oder den direkten Austausch. Thema ist flexibler. Es geht so.
Erzeuger-code Verbindung zum RabbitMQ-Broker und schafft und den Austausch mit einem bestimmten Namen.
Produzent veröffentlicht zu tauschen. Jede Nachricht veröffentlicht werden veröffentlicht, mit einem routing-Taste.
Verbraucher Verbindung zu RabbitMQ-broker.
Verbraucher schafft Warteschlange
Verbraucher bindet Queue an den exchange, exchange definiert der Hersteller. Die Bindung schließt auch die routing-keys für jede Nachricht benötigen Sie für diesen bestimmten Verbraucher.
Können sagen, Sie waren die Veröffentlichung von log-Meldungen. Die routing-Taste könnte etwas sein wie "log.info", "log.warnen", "log.error". Jede Nachricht veröffentlicht, indem der Produzent die entsprechenden routing-Taste angebracht. Sie haben dann einen Verbraucher sendet und E-Mail für alle Fehlermeldungen und einen anderen, der schreibt alle Fehlermeldungen in einer Datei. Also der emailer definieren Sie die Bindung aus der Warteschlange, um den Austausch mit der routing-Taste "anmelden.error". Diese Weise, obwohl der exchange empfängt alle Nachrichten, die der Warteschlange definiert für die emailer enthält nur die Fehlermeldungen. Der filelogger definieren Sie eine neue separate Warteschlange an das gleiche exchange-und ein anderes routing-Taste. Man könnte drei separate Bindungen für die drei verschiedenen routing-keys benötigen, oder nur den Platzhalter verwenden "anmelden.*" auf Wunsch werden alle Nachrichten aus der exchange-beginnend mit log.
Dies ist ein einfaches Beispiel, das zeigt, wie Sie erreichen, was Sie wollen zu tun.
Aussehen hier für code-Beispiele, die speziell Anzahl tutorial Nummer 5.
RabbitMQ
- server und das abrufen von Daten im Allgemeinen. Er möchte, ziehen bestimmte Nachrichten, die möglicherweise Kopfzeilen in der Nachricht. Bitte überarbeiten Sie Ihre Antwort. Darüber hinaus nehmen Sie sich bitte die Zeit, um zu formatieren, wie es scheint, gibt es Abschnitte, die nicht code, sondern sind formatiert als code.