2012-04-09 16 views

risposta

2

Ho fatto una domanda simile su alcuni gruppi di comunità di sviluppatori su Facebook. Non si trattava in particolare di GoogleAppEngine - ho chiesto in termini più generali di determinare il caso d'uso tra RabbitMQ e Celery. Ecco le risposte che ritengo pertinenti all'argomento e chiariscono in modo equo la differenza tra una coda di messaggi e una coda di attività.

chiesi:

Intende il caso di dire che "Il sedano è un QueueWrapper/QueueFramework che toglie la complessità di dover per la gestione delle attività interne queueManagement/queueAdministration etc"?

Capisco il linguaggio del libro che dice "Celery è una coda di attività" e "RabbitMQ è un broker di messaggi". Tuttavia, sembra un po 'confuso come utente di sedativi per la prima volta perché abbiamo sempre conosciuto RabbitMQ a essere la' coda '.

Aiutateci a spiegare come/cosa sedano fa in constrast con RabbitMQ

A response ho ricevuto da Abu Ashraf Masnun

Task Queue e Message Queue. RabbitMQ è un "MQ". Riceve i messaggi e recapita i messaggi.

Celery è una coda di attività. Riceve attività con i relativi dati, li esegue e consegna i risultati.

Dimentichiamo il sedano per un momento. Parliamo di RabbitMQ. Cosa facciamo di solito ? La nostra app Django/Flask invierebbe un messaggio a una coda . Avremo alcuni lavoratori in esecuzione che attenderanno nuovi messaggi in determinate code. Quando arriva un nuovo messaggio, inizia funzionante ed elabora le attività.

Il sedano gestisce magnificamente questo intero processo. Non abbiamo più bisogno di imparare o preoccuparti dei dettagli di AMQP o RabbitMQ. Possiamo utilizzare Redis o anche un database (MySQL ad esempio) come broker di messaggi. Celery ci consente di definire "Attività" con i nostri codici di lavoro.Quando abbiamo bisogno di fare qualcosa in background (o anche in primo piano), possiamo semplicemente chiamare questa attività (per l'esecuzione immediata) o pianificare questa attività per l'elaborazione ritardata . Celery gestiva il messaggio che trasmetteva e eseguiva le attività . Avvierebbe lavoratori che saprebbero come eseguire le tue attività definite e memorizzare i risultati. In questo modo è possibile interrogare in seguito il risultato dell'attività o anche il progresso dell'attività quando necessario.

È possibile utilizzare Celery come alternativa anche per il cron job (anche se non lo sono allo )!

Another response ho ricevuto da Juan Francisco Calderon Zumba

mia comprensione è che il sedano è solo un livello molto elevato di di astrazione per l'attuazione del produttore/consumatore di eventi. Ci vuole alcune cose dolorose che devi fare per lavorare ad esempio con rabbitmq. La stessa Celery non è la coda. Le code degli eventi vengono memorizzate nel sistema di tua scelta , sedano ti aiuta a lavorare con tali eventi senza dover scrivere il produttore/consumatore da zero.

Alla fine, ecco quello che ho portato a casa come il mio apprendimento finale:

Il sedano è una coda Wrapper/quadro che toglie la complessità di dover gestire i meccanismi AMQP sottostanti/architettura che vengono con RabbitMQ operativo direttamente

3

Le code di attività di GAE sono un mezzo per consentire a un'applicazione di eseguire l'elaborazione in background e non hanno lo stesso scopo di una coda di messaggi. Sono cose molto diverse che servono a funzioni diverse.

Una coda messaggi è un meccanismo per la condivisione di informazioni, tra processi, thread e sistemi.

Una coda di attività AppEngine è un modo per un'applicazione di AppEngine di dirsi, è necessario farlo, ma lo farò in un secondo momento, al di fuori del contesto di una richiesta del client.

+3

Non c'è alcuna differenza funzionale (di cui sono a conoscenza) tra una coda di messaggi e una coda di pull su App Engine. –