2012-04-09 12 views

Antwort

2

Ich habe eine ähnliche Frage zu einigen Developer Community Groups auf Facebook gestellt. Es ging nicht speziell um GoogleAppEngine - ich fragte eher allgemein nach Anwendungsfällen zwischen RabbitMQ und Sellerie. Hier sind die Antworten, die ich gefunden habe und die für das Thema relevant sind und den Unterschied zwischen einer Nachrichtenwarteschlange und einer Aufgabenwarteschlange verdeutlichen.

Ich fragte:

Wird es angemessen zu sagen, dass „Sellerie ist ein QueueWrapper/QueueFramework was die Komplexität nimmt der mit den internen queueManagement/queueAdministration Aktivitäten etc zu verwalten“?

Ich verstehe die Buchsprache, die sagt "Sellerie ist eine Aufgabenwarteschlange" und "RabbitMQ ist ein Nachrichtenbroker". Allerdings scheint es ein wenig verwirrend als erstmalig Sellerie-Benutzer, weil wir RabbitMQ bis immer die 'Warteschlange' bekannt haben.

helfen bitte erklären, wie/was Sellerie tut in constrast mit RabbitMQ

A response ich von Abu Ashraf Masnun

Task Queue und Message Queue bekam. RabbitMQ ist ein "MQ". Es empfängt Nachrichten und liefert Nachrichten.

Sellerie ist eine Aufgabenwarteschlange. Er empfängt Aufgaben mit den zugehörigen Daten, führt sie aus und liefert die Ergebnisse.

Vergessen wir Sellerie für einen Moment. Lass uns über RabbitMQ sprechen. Was würden wir normalerweise tun? ? Unsere Django/Flask App würde eine Nachricht an eine Warteschlange senden. Wir werden einige Arbeiter haben, die auf neue Nachrichten in bestimmten Warteschlangen warten. Wenn eine neue Nachricht eintrifft, startet sie arbeitet und verarbeitet die Aufgaben.

Sellerie verwaltet diesen gesamten Prozess wunderschön. Wir müssen nicht mehr lernen oder uns um die Details von AMQP oder RabbitMQ kümmern. Wir können Redis oder sogar eine Datenbank (zum Beispiel MySQL) als Nachrichtenbroker verwenden. Sellerie ermöglicht es uns, "Aufgaben" mit unseren Arbeitercodes zu definieren.Wenn wir etwas im Hintergrund (oder sogar Vordergrund) tun müssen, können wir einfach diese Aufgabe (für die sofortige Ausführung) aufrufen oder diese Aufgabe für die verzögerte Verarbeitung planen. Sellerie würde die Nachricht behandeln und die Aufgaben ausführen. Es würde Mitarbeiter starten, die Ihre definierten Aufgaben ausführen und die Ergebnisse speichern könnten. So können Sie später bei Bedarf die Aufgabe Ergebnis oder sogar Aufgabenfortschritt abfragen.

Sie können Sellerie als Alternative für Cron Job auch verwenden (obwohl ich nicht wirklich mag es)!

Another response Ich habe von Juan Francisco Calderon Zumba

Mein Verständnis ist, dass Sellerie nur ein sehr hohes Maß an Abstraktion ist der Erzeuger/Verbraucher von Ereignissen zu implementieren. Es dauert mehrere schmerzhafte Dinge, die Sie tun müssen, um zum Beispiel mit rabbitmq zu arbeiten. Sellerie selbst ist nicht die Schlange. Die Ereigniswarteschlangen werden im System Ihrer Wahl gespeichert, Sellerie hilft Ihnen, mit solchen Ereignissen zu arbeiten, ohne den Hersteller/Verbraucher von Grund auf neu schreiben zu müssen.

Schließlich, hier ist was ich als meine letzte Lernen nach Hause nahm:

Sellerie ist ein Queue Wrapper/Framework, das die Komplexität der mit den zugrunde liegenden AMQP Mechanismen/Architektur verwalten wegnimmt, die kommen mit dem Betrieb RabbitMQ direkt

3

Die Aufgabenwarteschlangen von GAE ermöglichen es einer Anwendung, eine Hintergrundverarbeitung durchzuführen, und sie dienen nicht demselben Zweck wie eine Nachrichtenwarteschlange. Sie sind sehr unterschiedliche Dinge, die verschiedenen Funktionen dienen.

Eine Nachrichtenwarteschlange ist ein Mechanismus zum Austausch von Informationen zwischen Prozessen, Threads und Systemen.

Eine AppEngine-Aufgabe Warteschlange ist eine Möglichkeit für eine AppEngine-Anwendung, sich selbst zu sagen, ich muss dies tun, aber ich werde es später tun, außerhalb des Kontextes einer Client-Anfrage.

+3

Es gibt keinen funktionalen Unterschied (den ich kenne) zwischen einer Nachrichtenwarteschlange und einer Pull-Warteschlange in App Engine. –