multi-threading basiert RabbitMQ Verbraucher

Wir haben ein windows-Dienst, das hören auf einzelne RabbitMQ Warteschlange und verarbeiten der Nachricht.

Wir möchten Sie herzlich derselben windows-Dienste, so dass Sie hören können mehrere Warteschlangen von RabbitMQ und verarbeiten der Nachricht.

Nicht sicher, ob das möglich sein kann durch die Verwendung von multi-threading, als jeden thread zu hören (Blockierung) der Warteschlange.

So, ich bin ganz neu multi-threading, müssen high-level-Richtlinie auf folgende Stelle, die mir helfen werden, starten Sie den Bau des Prototyps.

  1. Ist es möglich zu hören, mehrere Warteschlangen in der einzelnen Anwendung durch verwenden von threading?
  2. Wie zu handle die situation, wo, wenn jeder einzelne thread geschlossen habe
    nach unten (wegen der Ausnahme usw.), wie zurück zu bringen, ohne einen Neustart des
    ganzen windows-Dienste.
  3. Jede design pattern-oder open-source-Implementierung, die mir helfen können, zu behandeln diese Art von situation.
  • Eventuell ist eine doppelte: Wie zu implementieren single-consumer-multi-queue-Modell für rabbitMQ
  • Nein, ich bin nicht zu Fragen, über einzelne Verbraucher mehrere Warteschlangen. Es werden mehrere Warteschlangen mit mehreren Warteschlangen, aber die Umsetzung sollte erfolgen innerhalb der einzelnen windows-Dienste. Also statt zu schreiben die mehrere windows-Dienste, die für jede Warteschlange Verbraucher, möchte ich schreiben, einzelne windows-Dienste, die hören mehrere Warteschlangen und verarbeiten der Nachricht.
  • Ich schliesse mich, dies scheint nicht ein Duplikat zu sein.
  • sind Sie Fragen, wie zum aggregieren von Nachrichten aus mehreren Warteschlangen in eine Warteschlange, für die Konsum eine zentrale Lage?
  • Tut mir Leid, wenn mein schreiben ist nicht ganz klar. Einzelne windows-Dienst hören, um mehrere Warteschlangen auf den anderen Kanal. In anderen Worten, eine einzige Anwendung wirkt wie mehrere Verbraucher (jede Verbraucher erhalten Nachricht aus seiner Warteschlange basierend auf die route key binding). Wenn ich zu schreiben habe mehrere windows-Dienst für jeden Verbraucher wird nicht herausfordernd. Aufgrund der begrenzten Erfahrung in threading, ich bin nicht in der Lage zu denken, wie kann ich erreichen, innerhalb einzelne Anwendung durch die Verwendung von threads. Ich hoffe, dieser Kommentar wird Sinn machen. Lasst mir, wenn Ihr immer noch verwirrend, ich werde versuchen, es zu verbessern, weiter.
  • EasyNetQ (easynetq.com) ist eine ziemlich vollständige open-source high-level-API für RabbitMQ, dass nicht thread-management, connection handling, Fehlerbehandlung etc. out-of-the-box.
  • Wenn Sie haben keine Möglichkeit zu konfigurieren, die RabbitMQ-routing-setup (was Sie wahrscheinlich tun wird), ist es vermutlich leichter gemacht, die es gibt. Erstellen Sie eine neue Warteschlange, und geben Sie alle von den Bindungen an alle Warteschlangen, die Sie hören möchten (dh, die union von Ihren Bindungen). Dann ist die neue queue werden alle Nachrichten, die der andere queues zu tun, und Sie können einfach nur Zuhören, um die eine Warteschlange, ohne das Durcheinander von multithreading. Dies ist der Grund, warum RabbitMQ-routing vorhanden ist.

InformationsquelleAutor Mahesh | 2014-02-18
Schreibe einen Kommentar