Conceptos: mecanismos de publicación/suscripción. Canales. Intercambiadores
Clase 13 de 36 • Curso de Celery 4
En el mundo de los brokers de mensajería se utilizan principalmente dos tipos de metáforas. Unas vienen del mundo del correo, donde hay mensajes que tienen un emisor y un receptor, como una carta. Pero no todos los mensajes son de este tipo: hay mensajes que se emiten y puede recibir mucha gente: usamos en este caso metáforas del mundo de la radio.
En la radio tenemos un emisor que es el que emite el mensaje. Ese mensaje se retransmite, es decir, se hace un broadcast, de forma que todo el mundo puede recibirlo. En este caso no importa demasiado que quien escuche acuse recibo del mensaje, simplemente que haya un mecanismo eficiente que permita hacer llegar, a todos los que lo deseen, el mensaje que se emita.
¿Y quién va a recibir ese mensaje?
En el mundo de la radio, diferentes canales tienen diferente programación, y los oyentes seleccionan un canal para escuchar. En el mundo de los brokers de mensajería, los canales permiten concentrar los mensajes y que no se mezclen los relativos a diferentes tareas o partes de la aplicación, y adicionalmente los canales pueden tener suscriptores que serán los que únicamente reciban un mensaje que se envíe a este canal.
A este mecanismo se le denomina también pub/sub, o publicación/suscripción. Cuando el emisor publica, lo hace en un canal. Los posibles receptores son suscriptores del canal y simplemente tienen que indicar el canal al que quieren escuchar para ser alertados y funcionar de forma reactiva cada vez que un nuevo mensaje se emita en el canal.
Las estafetas
Las estafetas, intercambiadores o exchanges permiten regular este tráfico de publicación y suscripción y asignar a diferentes canales dependiendo de una serie de reglas. Los intercambiadores son fundamentales y le añaden flexibilidad a este tipo de sistemas, permitiendo el envío programable de mensajes dependiendo en metadatos de los mismos o incluso en su contenido.
La mayor parte de los brokers de mensajería pueden trabajar de las dos formas. Los brokers siguen protocolos tales como AMQP (Advanced Queue Messaging Protocol) que permite trabajar como correos y emisora de radio. AMQP se implementa en diferentes brokers de mensajería tales como RabbitMQ o ActiveMQ.
Otros protocolos se centran sólo en una parte de este mundo de la mensajería: MQTT, Message Queuing Telemetry Transport es un protocolo pub/sub, de publicación y suscripción.
Las colas de tareas
Por la variedad de protocolos y diferencia de implementaciones, muchas veces lo que se busca por parte del desarrollador es una biblioteca de alto nivel que abstraiga esto y permita trabajar con conceptos que estén en el dominio del problema. Celery, por ejemplo, usa principalmente el concepto de cola de tareas. Esto permite al usuario diseñar la aplicación en función de qué tareas se quiere que se ejecuten y de qué forma (con qué periodicidad, con qué prioridad) se van a ejecutar.
A la vez, Celery tiene acceso a los mecanismos básicos (intercambiadores, colas de mensajes), que se pueden programar de la forma que desee. Partiendo de una aplicación básica, Celery te permite crecer hasta hacer una verdadera aplicación avanzada de cómputo distribuido.
En este curso te acompañaremos en gran parte del camino de descubrimiento de Celery. Seguro que, cuando empieces a usarlo, no dejarás de ver su utilidad en cualquier aplicación que desarrolles.