Get it on Google Play
Tu partner Freelance para tus proyectos IT

Comunicación entre microservicios con Apache Kafka y Javascript

20-05-2020

En el vídeo de hoy hemos visto que, básicamente, existen dos maneras de comunicar microservicios: comunicación síncrona y comunicación asíncrona. Para la comunicación síncrona la solución mas habitual son las APIs(Rest o GraphQL) y para las comunicaciones asíncronas se usan sobretodo brokers de mensajes(Message brokers) donde la solución mas usada ahora mismo es Apache Kafka.

Vamos a ver ahora como instalar Apache Kafka y ponerlo a funcionar para después hacer un mini programa en Javascript que haga de publicador y consumidor de mensajes :

Instalar Apache kafka

Para instalar Apache Kafka nos lo podemos descargar de su página web http://kafka.apache.org/ y descomprimir en cualquier carpeta de nuestro PC.

Una vez descomprimido tendremos que, primero arrancar Zookeeper(El proyecto que usa Kafka para gestionar su cluster) y después podemos arrancar Kafka:

# Arrancamos Zookeeper
<KAFKA_HOME>/bin/zookeeper-server-start.sh config/zookeeper.properties

# Arrancamos Kafka
<KAFKA_HOME>/bin/kafka-server-start.sh config/server.properties

Crear ‘topic’ en Apache Kafka

Apache Kafka gestiona los mensajes mediante listas o ‘topics’. Básicamente los mensajes se envían a una lista y uno se subscribe a la lista.

Esto lo hemos hecho de la siguiente manera:

# Creamos nuestro primer topic 'test'
<KAFKA_HOME>/bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

# Comprovamos que existe
<KAFKA_HOME>/bin/kafka-topics.sh --list --bootstrap-server localhost:9092

Productores y consumidores mediante línea de comandos

Podemos trastear el uso de mandar mensajes y recibirlos mediante un par de scripts que tenemos disponibles en Apache Kafka. Para crear tanto un productor como un consumidor lo haremos de la siguiente manera:

# Productor
<KAFKA_HOME>/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic test

# Consumidor
<KAFKA_HOME>/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning

Creamos una aplicación en Javascript que use mensajería con Kafka

Como siempre me estáis diciendo que use mas Javascript en mis ejemplo haremos todos los ejemplos de esta serie dedicada a los microservicios en Javascript. En el vídeo detallo todos los pasos del proceso para todos los públicos y aquí os dejo el código(Solo requiere la dependencia de ‘kafka-node’):

const kafka = require('kafka-node');

const client = new kafka.KafkaClient({kafkaHost: '127.0.0.1:9092'});

/* Consumidor */
var consumer = new kafka.Consumer(client, [ { topic: 'test' } ]);

consumer.on('message', function (message) {
    	console.log(message);
	});

/* Productor */
var producer = new kafka.Producer(client);

producer.on('ready', function () {

	setInterval(function() {
  		producer.send( [ { topic: "test", messages: "Mensaje automático cada 5 seg." } ], function (err,data) {} );
		}, 5000);


	});

Aprovecho también para dejaros una diapositiva que al final no hemos usado en el vídeo per explica muy bien los conceptos de comunicación entre portlets:

Microservicios Comunicacion

Microservicios Comunicacion

Si te ha servido, por favor comparte
 

Leave a Reply