Patrón Doble Publicación

No recuerdo cómo se llama exactamente. Es muy simple, pero tiene nombre.

Necesidad

Si queremos confirmar que un evento se ha procesado, publicamos el evento en un tema/cola y se confirma al usuario que se ha metido en el sistema de mensajes (se ha encolado). Después, otro proceso se encargará de consumirlo y hacer lo que se tenga que hacer: actualizar modelo de lectura, guardar para análisis, enviar a otro usuario/sistema obteniendo respuesta por su parte, descartar, etc. Tras el procesado, publicará un evento en respuesta confirmando dicho procesado. El cliente inicial (quien publicó el primer evento), esperará esta respuesta como confirmación, y avisará al usuario (por Server Sent Events WebSockets o como tenga que ser) que el mensaje efectivamente se ha procesado.

Otros usos

Podemos conseguir transaccionalidad de una forma mucho más sencilla que usando Kafka/DBC/Debezium: publicamos un evento como resultado de un comando, sin ninguna acción, y al leer el comando ejecutamos la acción y publicamos comando de respuesta (no necesario de todas formas). Simplificamos mucho toda la infraestructura. No siempre nos va a servir claro. Si necesitamos respuesta inmediata del nuevo estado modificado no funciona.