En la entrada anterior, Redis: productor de mensajes, describo cómo definir un productor para la publicación de mensajes en el broker Redis; en la presente entrada, Redis: consumidor de mensajes, describiré cómo consumir mensajes del broker.
El primer paso es crear el broker al cual publicar mensajes; para ello, trabajaré con una imagen Docker con Redis. Para descarga la imagen y arrancar el contenedor es necesario ejecutar los siguientes comandos:
docker pull redis docker run --name some-redis -d redis
Tras su ejecución, tendremos Redis en una contenedor cuyo puerto de acceso es el 6379.
El segundo paso, es escribir el código del consumidor. Seguiremos los mismos criterios que en la entrada Redis: productor de mensajes.
Para crear la conexión con Redis, creamos un objeto de tipo Redis con los datos de la conexión a Redis. El snippet del código es el siguiente:
import redis publish_redis = redis.Redis(host=config.HOST_REDIS, port=config.PORT_REDIS, db=0)
Una vez que tenemos la referencia a Redis, necesitamos suscribirnos al topic donde leer los mensajes; una vez suscritos, nos mantenemos a la espera de la recepción del mesaje; al recepcionar el mensaje, obtenemos un mensaje con una estructura de diccionario del cual deberemos de obtener el campo data. El snippet con el código es el siguiente:
consume_client_topic = publish_redis.pubsub() consume_client_topic.subscribe(config.TOPIC_REDIS) for message in consume_client_topic.listen(): if message['data'] != 1: data = json.loads(message['data'].decode()) logging.info(f"mesagge={data['message']} result={data['result']}")
Para el lector interesado, el código del enlace está en el siguiente enlace.