2012-04-09 25 views

Respuesta

2

Hice una pregunta similar en algunos grupos de comunidades de desarrolladores en Facebook. No se trataba específicamente de GoogleAppEngine; en un sentido más general, pedí que se determinara el caso de uso entre RabbitMQ y Apio. Aquí están las respuestas que recibí que creo que son relevantes para el tema y aclaran bastante la diferencia entre una cola de mensajes y una cola de tareas.

me preguntó:

¿Será apropiado decir que "El apio es un QueueWrapper/QueueFramework que le quita la complejidad de tener para gestionar las actividades queueManagement/queueAdministration internos etc"?

Entiendo el idioma del libro que dice "Apio es una cola de tareas" y "RabbitMQ es un intermediario de mensajes". Sin embargo, parece un poco confuso como un usuario de apio por primera vez, porque siempre hemos sabido que RabbitMQ a sería la 'cola'.

Por favor, ayudar a la hora de explicar cómo/qué hace el apio en constraste con RabbitMQ

A response que recibí de Abu Ashraf Masnun

cola de tareas y Message Queue. RabbitMQ es un "MQ". Recibe mensajes y entrega mensajes.

Apio es una cola de tareas. Recibe tareas con sus datos relacionados, los ejecuta y entrega los resultados.

Olvidemos el apio por un momento. Hablemos de RabbitMQ. ¿Qué usualmente haríamos? Nuestra aplicación Django/Flask enviaría un mensaje a la cola . Tendremos algunos trabajadores ejecutándose que estarán esperando nuevos mensajes en ciertas colas. Cuando llega un nuevo mensaje, comienza a trabajar en y procesa las tareas.

Apio gestiona todo este proceso maravillosamente. Ya no necesitamos enterarse o preocuparse por los detalles de AMQP o RabbitMQ. Podemos usar Redis o incluso una base de datos (MySQL, por ejemplo) como intermediario de mensajes. Apio nos permite definir "Tareas" con nuestros códigos de trabajador.Cuando necesitamos hacer algo en el fondo (o incluso en primer plano), podemos simplemente llamar al esta tarea (para la ejecución instantánea) o programar esta tarea para el procesamiento retrasado . Apio manejaría el mensaje que pasa y ejecuta las tareas . Lanzaría trabajadores que sabrían cómo ejecutar sus tareas definidas y almacenar los resultados. Por lo tanto, puede consultar el resultado de la tarea o incluso el progreso de la tarea cuando sea necesario.

Puede utilizar Apio como alternativa para el trabajo cron también (¡aunque no me gusta realmente me gusta)!

Another response que ya ha recibido Juan Francisco Calderón Zumba

Mi entendimiento es que el apio es sólo un muy alto nivel de abstracción para implementar el productor/consumidor de eventos. Se necesita varias cosas dolorosas que debe hacer para trabajar, por ejemplo, con rabbitmq. El apio en sí mismo no es la cola. Las colas de eventos se almacenan en el sistema de su elección, el apio lo ayuda a trabajar con tales eventos sin tener que escribir desde cero el productor/consumidor.

Con el tiempo, esto es lo que llevó a casa como mi final de aprendizaje:

El apio es una cola Envoltura/marco que le quita la complejidad de tener que gestionar los mecanismos AMQP subyacentes/arquitectura que viene con RabbitMQ operativo directamente

3

Las Colas de tareas de GAE son un medio para permitir que una aplicación realice el procesamiento en segundo plano, y no van a cumplir la misma función que Message Queue. Son cosas muy diferentes que sirven para diferentes funciones.

Message Queue es un mecanismo para compartir información, entre procesos, hilos, sistemas.

Una tarea de AppEngine Queue es una forma de que una aplicación de App Engine se diga a sí misma, tengo que hacer esto, pero lo haré más adelante, fuera del contexto de una solicitud del cliente.

+3

No hay diferencia funcional (que yo sepa) entre una cola de mensajes y una cola de espera en App Engine. –