Comunicando dos microservicios usando Apache Kafka



Apache Kafka provee un sistema de mensajería mediante un bus de mensajes altamente escalable y resiliente. En entradas anteriores en nuestro blog hablamos sobre como instalar Kafka & Zookeeper desde Docker y sobre Windows directamente.

El código fuente del vídeo está disponible acá: https://github.com/yoandypv/spring-boot-kafka-basics

* Aprende más en nuestro blog: https://sacavix.com/
* Apóyanos en Patreon: https://www.patreon.com/sacavix_tech
(Con tu apoyo en Patreon accedes a ventajas exclusivas como directos, preguntas y respuestas en el chat, respuestas a tus dudas y acceso a nuestro libro “Patrones para la implementación de una arquitectura basada en microservicios”.

En esta entrada expondremos como desarrollar una aplicación que consta de dos microservicios y entre ellos se comunican usando Kafka mediante el paso de eventos, un intento bastante simplista pero real de comunicación basada en eventos.

El problema a resolver en este vídeo es : Implementar la sección de una plataforma basada en microservicios que gestiona clientes y bajo ciertas condiciones debe enviar notificaciones por email a los mismos.

Para esto vamos a implementar dos pequeños servicios «Customers» & «Notifications».

Customers recibe por API REST una notificación de creación de un cliente y posteriormente publica un mensaje de «CUSTOMER CREATED» en el bus de mensajes, el consumidor en esta arquitectura simplificada será Notifications, que recibe el mensaje y lo procesa de manera totalmente asíncrona y desacoplada.

Este vídeo forma parte de la serie “Guiado por eventos”, que tiene como objetivo explicar como implementar una arquitectura event driven.

Para aprender más visita nuestro blog: https://sacavix.com.

#microservicios #kafka #events #springboot

source

21 thoughts on “Comunicando dos microservicios usando Apache Kafka”
  1. Profe en caso de que una ruta se consuma y los datos sean modificados, y posteriormente no se puede enviar un evento al bus por algun error. ? Es decir El evento jamas llego al bus, pero aún así fueron modificados los datos en la base de datos de la ruta.

  2. Buen video, tengo una duda, se puede relacionar una tabla de un microservicio con otro? Si es así me podrías orientar en como se hace?

  3. Excelente , Gracias por ahondar en estos temas de microservicios y sus componentes doc , están muy escasos , gracias por el apoyo a la comunidad 👍

  4. ACabo de terminar un proyecto en Spring boot, y no se puede negar que es muy robusto, poderoso, estructurado, super tipado (obvio es Java), pero es inevitable extrañar a nodeJs, este mismo ejemplo, lo he podido emular en nodeJs con un 60% menos de config y lineas de codigos, si alguien me llega leer, es mejor aprender primero SpringBoot luego NodeJs, el cambio es mas llevadero, igual excelente video! y OJO, me encanta SpringBoot, pero es muy "Burocratico" por ponerle algun adjetivo!

  5. Hola, gracias por el Video, en el min 16:32 indicas que no es recomendable inyectar con @Autowired sino por constructor, aunque he usado poco Spring boot, se emplearlo de los 2 modos, pero me podrias indicar por favor, por que no es recomendable el @Autowired sino la inyeccion por constructor? saludos!

  6. Que buen video muy bien explicado, una duda, ¿Por qué recomiendas inyectar por constructor en vez de usar la anotación @Autowired?. De antemano muchas gracias Inge.

  7. Muy Buen Video, estaba perdido con kafka me ayudaste un monton y esta muy bien explicado gracias!

  8. Super excelente video, tengo una duda, el consumer ya queda activo por siempre escuchando ese topic?

  9. Excelente explicación, una pregunta talvez una explicación donde se tenga en un proyecto separado todo lo de kafka y y en los otros proyectos solo utilizar el jar algo cómo in Kafka útil

  10. Hola! he probado el código, y si se escribe en un topic desde un proyecto con nombre diferente pero respetando clases (por ejemplo cambiando los nombres de los paquetes de este proyecto que escribe a "com.sacavixPrueba") el otro proyecto con el listener y esa configuración no lo leen, además de entrar en un bucle de errores que saltan por consola. El primero seria el de TRUSTED_PACKAGES" que una vez puesto a "*" para que acepte todos, sigue saltando un bucle de error por consola mencionando esta vez que la clase no existe, en este ejemplo seria asi:

    Caused by: org.springframework.messaging.converter.MessageConversionException: failed to resolve class name. Class not found [com.sacavixPrueba.events.RequestCreatedEvent]; nested exception is java.lang.ClassNotFoundException: com.sacavixPrueba.events.RequestCreatedEvent

    claro esta, mi proyecto que escucha tiene la mism a configuración que este pero estando la clase en com.sacavix.events.RequestCreatedEvent y no en com.sacavixPrueba.events.RequestCreatedEvent

    Es decir, unicamente se escuchan si proceden de un proyecto con los mismos paquetes y nombres de las clases igual, no estando esto de forma correcta.

    Un saludo y espero respuesta!!

  11. Jum videos que no hay mucho en la red en español, preciso necesito estudiar esto para aplicarlo en la empresa

  12. Hola Yoandy muchas gracias por las mieles que estás compartiendo, ejemplos sencillos y muy prácticos! 💪💪💪

  13. Excelente video si porfavor sería muy bueno que hicieras una serie de Kafka profundizando sobre los conceptos con ejemplos prácticos puede ser reutilizando un mismo proyecto durante la serie gracias por el aporte.

Leave a Reply

Your email address will not be published.

Captcha loading...