Event Bus

La infraestructura que permite comunicación asíncrona entre servicios mediante eventos.

¿Qué es un Event Bus?

Es el mecanismo que permite que un servicio publique un hecho relevante y que otros servicios reaccionen a él sin necesidad de llamadas directas inmediatas.

Por ejemplo:

  • ms-orders publica OrderPlaced
  • ms-inventory consume ese evento
  • ms-notifications también lo consume

¿Por qué usar eventos?

Porque ayudan a:

  • desacoplar servicios en el tiempo
  • reducir dependencias síncronas
  • permitir reacciones múltiples ante un mismo hecho
  • construir procesos distribuidos

Responsabilidades principales

  • Transporte de eventos
  • Publicación y suscripción
  • Reintentos
  • Manejo de mensajes fallidos
  • Soporte para DLQ
  • Apoyo a procesos distribuidos

Qué no debería ser

El event bus no debería convertirse en un lugar donde vive la lógica de negocio central. La lógica de reacción debe estar en los servicios consumidores.

Tampoco debería usarse como excusa para publicar eventos ambiguos o mal definidos.

Conceptos importantes

Evento de dominio

Representa algo significativo que ocurrió en el negocio.

Idempotencia

Necesaria porque los mensajes pueden llegar más de una vez.

Dead Letter Queue

Lugar donde van mensajes que no pudieron procesarse correctamente.

At-least-once delivery

Garantía común en muchos brokers: el mensaje llegará al menos una vez, pero puede duplicarse.

Trade-offs

Beneficios

  • Desacoplamiento
  • Escalabilidad
  • Integración más flexible
  • Procesamiento distribuido

Costes

  • Más complejidad operativa
  • Consistencia eventual
  • Observabilidad más difícil
  • Necesidad de reintentos e idempotencia

Ejemplo práctico

Una orden se crea y se confirma.

ms-orders publica OrderPlaced.

A partir de ahí:

  • inventory descuenta stock
  • notifications envía confirmación
  • analytics registra el evento

Ninguno necesita ser llamado directamente en el mismo flujo síncrono.

Resumen

El Event Bus permite comunicación asíncrona entre servicios. Su valor está en desacoplar y distribuir responsabilidades, pero exige más disciplina en contratos, observabilidad e idempotencia.