Warum Sellerie anstelle von RabbitMQ verwenden?

77

Nach meinem Verständnis ist Sellerie eine verteilte Aufgabenwarteschlange. Dies bedeutet, dass nur Aufgaben / Jobs an andere Server gesendet und das Ergebnis zurückgegeben werden müssen. RabbitMQ ist eine Nachrichtenwarteschlange und nichts weiter. Ein Mitarbeiter kann jedoch einfach auf den MQ hören und die Aufgabe ausführen, wenn eine Nachricht empfangen wird. Damit wird genau das erreicht, was Sellerie bietet. Warum also Sellerie überhaupt brauchen?

Kar
quelle

Antworten:

66

Sie haben Recht, Sie brauchen überhaupt keinen Sellerie. Wenn Sie ein verteiltes System entwerfen, gibt es viele Optionen und es gibt keinen richtigen Weg, um Dinge zu tun, die für alle Situationen geeignet sind.

Viele Leute finden es flexibler, dass Pools von Nachrichtenkonsumenten darauf warten, dass eine Nachricht in ihrer Warteschlange erscheint, etwas Arbeit erledigt und eine Nachricht sendet, wenn die Arbeit beendet ist.

Sellerie ist ein Framework, das viele Dinge in einem Paket zusammenfasst. Wenn Sie jedoch nicht wirklich das gesamte Paket benötigen, ist es besser, RabbitMQ einzurichten und genau das zu implementieren, was Sie benötigen, ohne die Komplexität. Darüber hinaus kann RabbitMQ neben dem von Celery implementierten Task-Queue-Szenario in vielen weiteren Szenarien verwendet werden.

Wenn Sie sich jedoch für Sellerie entscheiden, denken Sie zweimal über RabbitMQ nach. Das Nachrichtenwarteschlangenmodell von Celery ist simpel und passt besser zu Redis als zu RabbitMQ. Kaninchen hat eine Vielzahl von Optionen, die Sellerie grundsätzlich ignoriert.

Michael Dillon
quelle
6
"Kaninchen hat eine Vielzahl von Optionen, die Sellerie grundsätzlich ignoriert". Das stimmt, ist aber etwas irreführend. Sie können beispielsweise Routing-Regeln in der Rabbit-Ebene einrichten, die nicht von Sellerie gesteuert werden, sich jedoch auf das Routing und den Verbrauch von Sellerie-Aufgaben auswirken. Es ist ein Entwurfsproblem, ob das Routing vom Anrufer, einem benutzerdefinierten Sellerie-Router oder dem Austauschmechanismus ausgeführt werden soll. Es ist wahr, dass diese Kaninchen-Konfigurationen für Sellerie "unsichtbar" sein können, aber das bedeutet nicht, dass sie keinen nützlichen Effekt haben.
Chris Johnson
30

Sellerie bietet im Grunde eine schöne Schnittstelle, um genau das zu tun, was Sie gesagt haben, und kümmert sich um die gesamte Konfiguration für Sie. Ja, Sie könnten es von Hand machen, aber Sie würden nur Sellerie umschreiben.

mjtamlyn
quelle
6
Es gibt auch das Operations-Element. Riesige Teile von Sellerie dienen der Zuverlässigkeit (z. B. nicht zum Absturz bringen, wenn eine bestimmte Ausnahme serialisiert wird usw.) und der Verwaltung von Arbeitnehmern und Gruppen von Arbeitnehmern.
Askol