Nachrichtenwarteschlangen in Ruby on Rails
Welche message queues sind Menschen, die für Ihre Rails-apps und was war die treibende Kraft hinter der Entscheidung, um es auszuwählen. Unterstützt die neuesten Twitter-publicity, die über Ihre in-house-queue Starling falling down Einfluss auf vorhandene design-Entscheidungen.
Arbeite ich an einer app, die eine message-queue zu verarbeiten, einige hintergrund-tasks, habe ich noch nicht viel getan, und die meisten der Sachen, die ich gesehen habe in der Vergangenheit wurde über Starling und Workling, und ehrlich gesagt, die Anwendung ist nicht sehr groß, und diese Lösung würde vermutlich ausreichen, aber ich hätte gerne Erfahrungen die Integration der besten Lösung möglich, wie ich bin sicher, ich werde Einbindung in ein größeres app an einem gewissen Punkt.
Welche message queues würden Sie vorschlagen, für eine Rails-app???
EDIT: Danke für die Vorschläge, ich werde mal schauen ein paar von Ihnen an diesem Wochenende.
EDIT Nochmal: ich habe einen Blick herum und ein wenig überfordert für die Wahl. Ich bin allerdings gehen über die Integration von RabbitMQ mit Workling in die app, die ich Baue, dann, wenn ich jemals brauchen einige Kenntnisse über eine schnelle queue habe, habe ich diese und wissen, ob oder nicht, es passt meine Bedürfnisse.
EDIT: der Suche nach mehr und mehr, dass DJ passt mir ganz gut, wenn ich immer "entwachsen" auf eine Website, die ich würde sagen, dass Resque ist, wo ich fahren würde.
EDIT: (Dez 2014) Also es ist schon eine lange Zeit, da fragte ich diese, aber ich sehe, es wird immer noch einige Ansichten oder einige Stimmen, so dass ich dachte, ich würde das update auf mein Ansatz jetzt, wenn es um meine Wahl von hintergrund-Arbeiter.
Meiner Meinung nach derzeit der beste Weg zum ausführen von hintergrund-jobs, die in Ruby ist mit Sidekiq. Eine Menge Leute haben wirklich gelobt Sidekiq für Gewinde-Arbeitern eher als Prozess pro Arbeitnehmer, welche deutlich weniger Speicher als die gerne von Resque, die ich zuvor Sidekiq. Das ist gut, aber für mich war nicht das killer-feature. Durch die Verwendung Sidetiq mit Sidekiq, das scheduling von jobs ist so trivial, dass ich umgestellt und habe es nie bereut von ihm, bei weitem die einfachste scheduling von jobs, die ich verwendet und hat Sidekiq eine Brise zu verwenden.
InformationsquelleAutor der Frage nitecoder | 2009-04-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als update -- GitHub verschoben Resque auf Redis statt Verzögert job. Sie jedoch immer noch empfehlen delayed_job für kleinere setups:
https://github.com/resque/resque
InformationsquelleAutor der Antwort Julian H
Chris Wanstrath von github war bei den SF Ruby meetup vor kurzem, im Gespräch über Ihre Warteschlange. Sie versuchte Starling, beanstalk, und einige andere Varianten, bevor Sie sich auf Shopify ist delayed_job. Sie sind ziemlich aggressiv mit Ihrer Verwendung von backgrounding.
Hier ein blog-post vom letzten Jahrdass die Gespräche über Ihren Umzug zu DJ.
Wo ich jetzt bin rollten wir unsere eigenen vor einigen Jahren, aber ich bin dabei, einige Ideen aus DJ zur Verbesserung der Handhabung.
InformationsquelleAutor der Antwort Sarah Mei
Ich würde empfehlen, delayed-job als eine tote einfache Lösung, wenn Sie nicht erwarten, dass eine schwere Last. Vorteile: einfache Installation, leicht zu überwachen, einfachen code, keine externen Abhängigkeiten. Früher haben wir unsere ActiveMessaging (mit ActiveMQ und stomp), aber es war ein overkill für unser Projekt, so dass wir eingeschaltet, um delayed_job für seine Einfachheit.
Sowieso, wenn Sie sehr reif und schnelle Lösung, ActiveMQ ist eine sehr gute Wahl. Wenn Sie nicht wollen, verbringen zu viel Zeit auf die Aufrechterhaltung der full-scale-message-queueing-Lösung, die Sie nicht wirklich brauchen, delayed_job ist ein Weg zu gehen. Hier ist ein guter Artikel über Scribd Erfahrung mit ActiveMQ.
InformationsquelleAutor der Antwort Oleg Shaldybin
Hier sind ein paar Ruby - /Rails-Lösungen, eine oder mehrere von diesen können eine gute Passform, je nach Ihren Bedürfnissen:
http://xph.us/software/beanstalkd
http://rubyforge.org/forum/forum.php?forum_id=19781
http://backgroundrb.rubyforge.org
Und einer hosted-Lösung von Amazon, die würde eine große Warteschlange für den Austausch zwischen Ruby/Rails und anderen Komponenten eines größeren Systems:
http://aws.amazon.com/sqs
Hoffe, das hilft!
InformationsquelleAutor der Antwort Adam Alexander
Den Messaging-Server möchten Sie vielleicht zu gehen, ist RabbitMQ. Erlang kühle, AMQP, gute Ruby-libs.
http://www.bestechvideos.com/2008/12/09/rabbitmq-an-open-source-messaging-broker-that-just-works
InformationsquelleAutor der Antwort Sebastian
Rany Keddo gab eine nützliche Präsentation über Starling + Workling bei der RailsConf Europe im vergangenen Jahr. Er verglich die verschiedenen Lösungen verfügbar zu der Zeit.
Twitter neueste Weg von Starling + Workling wahrscheinlich nicht viel bedeuten, regelmäßige rails-app. Sie haben viel mehr Fragen von Maßstab und wahrscheinlich haben Sie Probleme mit altlasten, die mit Ihren datenspeicher aus, der verhindert, dass Sie von der Skalierung der Vergangenheit Ihre aktuelle Umsetzung.
Beanstalkd ist eine gute alternative, einfach weil es als daemon läuft und hat-Wrapper in anderen scripting-Sprachen (wenn Sie geschehen, um die Richtung zu ändern oder in der Zukunft haben unterschiedliche Komponenten, die in anderen Sprachen geschrieben).
Diese link hat auch einen guten Vergleich der vor-und Nachteile der verschiedenen rails-Lösungen zur Verfügung.
InformationsquelleAutor der Antwort Pras
Benutze ich background_job die wie delayed_job ist eine Datenbank-basierte Warteschlange.
Einer Datenbank macht ein OK-Warteschlange, solange man sich nicht dabei zu viel Verkehr in und aus.
Der Grund, warum ich wie background_job (und delayed_job) ist, dass Sie nicht verlangen, einen separaten Prozess. Sie kann durch cron. Für mich ist dies von zentraler Bedeutung, weil meine messaging-Anforderungen sind sogar noch einfacher als meine mageren sysadmin-skills.
InformationsquelleAutor der Antwort Luke Francl