2012-04-18 23 views
5

Estoy trabajando en un sistema de tienda de eventos/CQRS. Por el momento, el patrón que uso es para que los comandos sean sincrónicos. Es decir, la interfaz de usuario no muestra una operación como completa hasta que se completa el comando, y el éxito/falla se muestra al usuario. Durante la ejecución de los comandos, todos los eventos generados (por ejemplo, la acción X se produjo en la raíz de agregado Y) se almacenan en un almacenamiento duradero.¿Cuáles son las ventajas de almacenar comandos en un sistema CQRS/ES?

Todas las descripciones de CQRS que he leído implementan el almacenamiento de comandos. Me pregunto si esto es necesario en mi situación.

Otra nota: hay muchas acciones de tipo comando de larga ejecución, por lo que he dividido las operaciones en un comando que genera eventos, y los eventos a su vez emiten más comandos. Los comandos son idempotentes, en función del estado de la raíz agregada. No sé cómo impactará esto en la respuesta, pero vale la pena señalarlo.

Gracias, Erick

+0

¿Podría proporcionar algunos ejemplos de implementación que almacenan comandos? La mayoría de los ejemplos que he visto solo almacenan los eventos producidos como resultado de los comandos. –

+0

No tengo ningún framework, pero CQRS sin fuente de eventos registra comandos para la reproducción, al menos desde mi entendimiento. –

+0

Estoy un poco preocupado por la seguridad. ¿Qué planeas hacer con comandos como ChangeUserPassword que contiene una contraseña de texto claro? – Kimble

Respuesta

6
  1. Las pruebas de regresión Después de cada iteración dev se puede agarrar registro de comandos del entorno de producción, volver a ejecutar y compara los flujos de eventos producidos con uno en la producción. Si son diferentes, tienes regresión en tu lógica.

  2. Visualización y análisis de flujo de mensajes.

4

Los ejemplos de CQRS que he visto sin abastecimiento evento son bases de datos relacionales habituales que almacenan el estado del sistema en lugar de eventos que muestran cómo el estado de los datos se produjo. El "comando de origen" es un concepto nuevo para mí y no parece correcto ya que los controladores de comando pueden cambiar con el tiempo. Cualquier cambio en la lógica de los controladores de comando probablemente daría como resultado fallas en los comandos cuando se reproducen. La repetición de eventos no tiene este problema ya que las propiedades de los objetos se establecen directamente.

+0

Esto tiene sentido, ¡gracias! –

Cuestiones relacionadas