2012-01-31 16 views
32

Según tengo entendido, Celery es una cola de tareas distribuidas, lo que significa que lo único que debe hacer es despachar tareas/trabajos a otros servidores y obtener el resultado. RabbitMQ es una cola de mensajes, y nada más. Sin embargo, un trabajador podría simplemente escuchar el MQ y ejecutar la tarea cuando se recibe un mensaje. Esto logra exactamente lo que ofrece Apio, entonces, ¿por qué necesita Apio en absoluto?¿Por qué usar Apio en lugar de RabbitMQ?

Respuesta

31

Tienes razón, no necesitas apio en absoluto. Cuando diseña un sistema distribuido, hay muchas opciones y no hay una forma correcta de hacer las cosas que se adaptan a todas las situaciones.

Muchas personas consideran que es más flexible tener grupos de consumidores de mensajes esperando que aparezca un mensaje en la cola, haciendo algún trabajo y enviando un mensaje cuando el trabajo finaliza.

Apio es un marco que envuelve un montón de cosas en un paquete, pero si realmente no necesita todo el paquete, entonces es mejor configurar RabbitMQ e implementar justo lo que necesita sin toda la complejidad. Además, RabbitMQ se puede utilizar en muchos más escenarios además del escenario de cola de tareas que implementa Celery.

Pero si elige Apio, entonces piense dos veces sobre RabbitMQ. El modelo de colas de mensajes de Aplery es simplista y realmente se ajusta mejor a algo como Redis que a RabbitMQ. Rabbit tiene un amplio conjunto de opciones que Celery básicamente ignora.

+2

"Rabbit tiene un amplio conjunto de opciones que Celery básicamente ignora". Eso es cierto pero un poco engañoso. Por ejemplo, puede configurar reglas de enrutamiento en la capa Conejo que no están controladas por Apio, pero sí afectan el enrutamiento y el consumo de las tareas de Apio. Es un problema de diseño si desea que el enrutador sea manejado por la persona que llama, un enrutador personalizado de Aplery o el mecanismo de intercambio. Es cierto que las configuraciones de Rabbit pueden ser "invisibles" para Aplery, pero eso no significa que no tengan un efecto útil. –

21

Básicamente, el apósito proporciona una interfaz agradable para hacer exactamente lo que usted dice, y trata con toda la configuración para usted. Sí, podrías hacerlo a mano, pero estarías reescribiendo el apio.

+5

También está el elemento de operaciones. Enormes partes de Apio están ahí para garantizar la confiabilidad (por ejemplo, no fallar cuando una excepción en particular se serializa, etc.) y para administrar a los trabajadores y grupos de trabajadores. – asksol

Cuestiones relacionadas