message-queue rabbitmq celery gearman

message queue - Rabbitmq o Gearman: elegir una cola de trabajos



message-queue celery (2)

En el trabajo, necesitamos construir un servidor de trabajos para cosas como enviar correos electrónicos, construir archivos PDF, procesar algunos datos, etc. Obviamente, nos gustaría construir sobre algún tipo de sistema de cola genérico. Estoy familiarizado con Gearman, y este es un problema exacto que trata de resolver: poner trabajos en una fila donde los trabajadores vienen a buscarlos. Sin embargo, estoy viendo muchas menciones de Rabbitmq y no estoy seguro de cómo se usa en este escenario.

¿Es Rabbitmq un buen marco para construir un sistema de empleos distribuidos además?


Diría que Gearman es mejor para poner en cola "trabajos" y RabbitMQ es mejor para poner en cola "datos". Por supuesto, ambos son realmente lo mismo, pero la forma en que funciona para mí es que si estás tratando de "desplegar" el trabajo por hacer, y los trabajadores pueden trabajar de forma independiente, Gearman es la mejor manera de hacerlo . Pero si intenta alimentar datos de muchas fuentes a menos consumidores de datos, RabbitMQ es la mejor solución.

La historia de RabbitMQ, como algo que permitía a Twitter tomar muchísimos mensajes y alimentarlos en crujientes pasarelas SMS que podían mantener solo una conexión abierta, era de velocidad limitada y no tenía reintentos, es ilustrativo del tipo de problemas que RabbitMQ es bueno para resolver.


Todo depende de qué semántica quieras exponer. Es realmente fácil hacer lo que Gearman hace además de RabbitMQ, que sin duda puede ''desplegar'' mensajes a los trabajadores independientes.

Pero Gearman está diseñado para un propósito. IIUC, Gearman es un marco para el procesamiento de trabajos y no un sistema de mensajes como tal. Hay otros marcos tales como Apio que usan RabbitMQ bajo el capó para eso. Aquí hay un artículo sobre Apio que vale la pena leer.