2013-10-23 15 views
15

Für eine lange Zeit verwendeten wir msmq und Redis-Warteschlange (IRedisList). Vor ein paar Monaten haben wir versucht, Redis Pub-Sub zu versuchen.Redis-Warteschlange vs MSMQ

Unsere Anwendung verfügt über mehr als zwanzig Dienste, die Nachrichten aus der Warteschlange lesen oder Kanäle mit redis abonnieren. Wir haben auch mehr als zehn Warteschlangen, denen wir Nachrichten senden. Die Anwendung ist multi-threaded.

Also was will ich von dir?

Jetzt haben wir etwas Zeit, um zu entscheiden, welche Art von Warteschlangen wir verwenden wollen und was wir durch eine andere Art von Warteschlange ersetzen wollen.

Ich habe versucht, nach Post über MSMQ VS Redis zu suchen und fand nicht genügend Informationen.

Kann mir jemand zu diesem Thema beraten?

Antwort

29

IMO, Sie versuchen hier Äpfel und Orangen zu vergleichen.

MSMQ ist eine MOM der Unternehmensklasse (Message Oriented Middleware, d. H. Ein Warteschlangensystem), das Persistenz, Transaktionsunterstützung und umfangreiche Funktionen bietet.

Redis ist ein schneller In-Memory-Datenstrukturserver, auf dem Sie ein Warteschlangensystem aufbauen können. Eine ordnungsgemäße Implementierung der grundlegenden Funktionen von MSMQ mit Redis ist bereits eine schwierige Aufgabe. Es wäre wahrscheinlich überhaupt nicht möglich, die erweiterten Funktionen (wie die Unterstützung der Verteilungstransaktion) zu implementieren.

Ich würde vorschlagen, um die Eigenschaften zu versuchen, Sie aus der Warteschlangen-System erwarten aufzulisten:

  • Sie persistency brauchen Sie?
  • Benötigen Sie Transaktionsunterstützung?
  • Benötigen Sie verteilte Transaktionsunterstützung?
  • Brauchen Sie "einmal und nur einmal" Liefer Semantik? Höchstens einmal? Mindestens einmal?
  • Benötigen Sie mehrere Wiederholungsrichtlinien (lineare Verzögerung, exponentielles Backoff, etc ...)?
  • Benötigen Sie Ausnahme-/Dead-Queues?
  • Benötigen Sie Artikel Aufbewahrung?
  • Benötigen Sie Hilfe zum Durchsuchen der Warteschlangen? Warteschlangenverwaltung
  • Benötigen Sie eine Artikelprioritätsverwaltung?
  • Benötigen Sie automatische Artikelablauf?
  • Benötigen Sie verzögerte Artikel?
  • Benötigen Sie eine Sequenzierung? Letzte Wertwarteschlangen?
  • Benötigen Sie Publish-and-Subscribe? Mit Multi-Casting?
  • Müssen Sie mehrere Warteschlangen gleichzeitig in einem einzigen Thread aus der Warteschlange entfernen?
  • Benötigen Sie Unterstützung für hohe Verfügbarkeit und/oder Clusterunterstützung?
  • Haben Sie einen hohen Durchsatz? Brauchen Sie die beste Leistung?

Je nach Ihren Anforderungen kann Redis gut oder schlecht sein. Aber erwarte nicht, dass du mit Redis den Schnickschnack einer echten MOM bekommst.

Letzter Punkt: Sie erwähnten die Redis Pub/Sub-Funktion. Bitte beachten Sie, dass dieser Mechanismus überhaupt nicht auf einem Warteschlangensystem basiert. Es gibt keine Garantie für die Zustellung von Nachrichten mit Redis Pub/Sub. Wenn ein Teilnehmer nicht zuhört, geht der Gegenstand für diesen Teilnehmer verloren.

+1

Danke mann.Gute Antwort – FelProNet