Estoy tratando de implementar mi propia infraestructura CQRS con Event Sourcing para conocerla mejor. Como proyecto de ejemplo, estoy implementando un motor de blog, sé que podría no ser el ajuste perfecto, pero solo quiero trabajar en algo real.Validación de unicidad cuando se utiliza CQRS y aprovisionamiento de eventos
El problema al que he llegado ahora es la validación. Cada publicación tiene un shortUrl
, y el shortUrl
debe ser único, pero ¿dónde debo poner esta validación en el dominio? Sé que tendré esa validación antes incluso de enviar el comando leyendo mi tienda de lectura para verificar si es válida al crear un comando de crear publicación o actualizar el comando de publicación.
Puedo pensar en dos "soluciones".
- Tener un agregado
Blog
que guarda el registro de todos los ajustes relacionados con el blog y también referencias a todos los postes. Pero el problema con esto en mi opinión es que tengo que manejar la comunicación entre los agregados en ese escenario, así como cada vez que necesito validar la singularidad de unshortUrl
Necesito leer todos los eventos de la tienda de eventos para crear todas las publicaciones y eso parece complicado. - La segunda alternativa que tengo es cuando se desencadena el evento y mi controlador de eventos que crea el modelo de lectura desencadena un evento de URL corto duplicado cuando se da cuenta de que tendrá dos direcciones URL cortas que apuntan a diferentes publicaciones. ¿Es válido tener el modelo de lectura para disparar eventos cuando detecta errores?
¿Hay más alternativas? Tenga en cuenta que sé que mi dominio podría no ser el más adecuado para cqrs y DDD, pero estoy haciendo esto para aprender en un dominio pequeño.
Ver: http://stackoverflow.com/questions/2916899/how-to-handle-set-based-consistency-validation-in-cqrs –