Buenas gente, estoy armando un microservicio de notificaciones (emails, push, SMS) y me gustaría que le den una revisión a mi lógica actual. Uso un patrón de cola con RabbitMQ, un worker que consume y envía, pero siento que el diseño está muy acoplado. Mi idea es tener un NotificationService que recibe un DTO, lo mapea a un evento y lo publica en la cola. Luego el worker deserializa, decide el canal según un campo 'type' (EMAIL, PUSH, SMS) y llama al proveedor correspondiente (SendGrid, Firebase, Twilio). El tema es que cada vez que agrego un canal nuevo, toco el worker. ¿Alguna sugerencia para hacerlo más extensible? Adjunto pseudocódigo:
function handleEvent(event) {
switch (event.type) {
case 'EMAIL': sendEmail(event); break;
case 'PUSH': sendPush(event); break;
case 'SMS': sendSms(event); break;
}
}
¿Mejor usar un patrón de estrategia o algo como un pipeline de procesamiento? Gracias.