Introducción: Emisores y suscriptores
Publish-Subscribe (Pub/Sub) permite que múltiples consumidores reciban eventos sin que el productor conozca quién los recibe. El emisor publica en un tópico y los suscriptores reaccionan cuando llega el mensaje.
Este desacoplamiento habilita escalado y evolución independiente: nuevos consumidores se agregan sin tocar al productor, y el sistema puede crecer sin reescribir la lógica central.
El costo es la complejidad operativa: necesitas monitoreo, manejo de reintentos y contratos claros para evitar que un cambio de evento rompa a varios servicios.

Prompt: Publish-subscribe topics with multiple consumers, clean minimal style.
1. Naturaleza: Polinización
Las abejas recolectan polen y lo distribuyen a distintas flores sin saber qué plantas lo recibirán.
El polen se “publica” en el entorno y diferentes flores lo “consumen” según su ubicación y ciclo.
En Pub/Sub, el evento es ese polen: se emite una vez y múltiples suscriptores lo procesan con objetivos diferentes.

Prompt: Bees pollinating multiple flowers, soft natural illustration.
2. Mundo Real: Notificaciones masivas
Cuando un usuario publica contenido, varios sistemas reaccionan: feed, notificaciones, métricas y recomendaciones.
El productor no llama a cada servicio; solo publica el evento y cada equipo consume según necesidad.
Si mañana aparece un nuevo servicio de análisis, simplemente se suscribe al tópico sin tocar al publicador.

Prompt: Notification fan-out diagram, clean flat style.
3. Implementación en C#: Código Paso a Paso
public class Topic
{
public event Action Message;
public void Publish(string payload) => Message?.Invoke(payload);
}
var topic = new Topic();
// Subscriber A
topic.Message += msg => Console.WriteLine($"A recibió: {msg}");
// Subscriber B
topic.Message += msg => Console.WriteLine($"B recibió: {msg}");
// Publisher
topic.Publish("Pedido creado");
En producción necesitas un broker (Kafka, RabbitMQ, Azure Service Bus) para garantizar entrega, reintentos y escalado.
Define contratos de eventos versionados y consumidores idempotentes para manejar duplicados y fallos parciales.
4. Pub/Sub vs Colas punto a punto
En Pub/Sub, un mismo mensaje puede llegar a múltiples suscriptores. En colas punto a punto, un mensaje se consume una sola vez por un solo consumidor.
Usa Pub/Sub cuando quieras difusión y reactividad; usa colas cuando necesitas balanceo de carga entre workers.
5. Diagrama UML

Prompt: UML diagram of publish-subscribe pattern, clean vector layout.

Prompt: Pub/Sub flow diagram with topics and subscribers, minimal infographic style.
⚠️ Cuándo NO Usar Pub/Sub
- Si necesitas orden estricto y procesamiento único por mensaje.
- Si el sistema es pequeño y la complejidad de un broker no se justifica.
- Si no puedes manejar la consistencia eventual entre servicios.
💪 Ejercicio
Diseña un tópico de eventos para un e-commerce y define al menos 3 suscriptores con responsabilidades distintas.
Conclusión
Publish-Subscribe es un patrón esencial para sistemas desacoplados y escalables. Permite que nuevas funcionalidades se conecten sin tocar a los productores.
Aplicado con contratos claros e idempotencia, ofrece flexibilidad y evoluciona bien en arquitecturas distribuidas.