Communitygithub.com

AxonIQ/AxonFramework

Explica y razona sobre los Límites de Consistencia Dinámicos (DCB) y cómo Axon Framework 5 y Axon Server los implementan. Úsalo cuando el usuario pregunte sobre 'DCB', 'límite de consistencia dinámico', 'límite de consistencia', 'matar el agregado', modelado de consistencia entre múltiples entidades, 'EventCriteria', '@EventCriteriaBuilder', '@EventTag', '@EventSourcedEntity', 'Tag', tags vs streams, 'AppendCondition', 'SourcingCondition', 'ConsistencyMarker', concurrencia optimista en el almacén de eventos, cómo elegir.

¿Qué es AxonFramework?

Este skill ofrece una guía detallada sobre los Límites de Consistencia Dinámicos (DCB) en Axon Framework 5 y Axon Server. Explica cómo reemplazan el enfoque tradicional de agregados con un modelo más flexible basado en tags, EventCriteria y condiciones dinámicas para garantizar la coherencia de los datos sin sacrificar la escalabilidad.Es útil para desarrolladores que buscan modelar la consistencia entre múltiples entidades de manera eficiente, usando anotaciones como @EventSourcedEntity y @EventTag, así como AppendCondition y SourcingCondition para controlar la concurrencia optimista. El skill detalla cómo elegir entre tags y streams según las necesidades de consistencia y rendimiento, y cómo 'matar el agregado' ya no es necesario gracias a los nuevos mecanismos. Soporta arquitecturas basadas en eventos y microservicios con Axon Server, facilitando la implementación de sistemas distribuidos robustos y desacoplados.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add AxonIQ/AxonFramework

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace AxonFramework?

Explica y razona sobre los Límites de Consistencia Dinámicos (DCB) y cómo Axon Framework 5 y Axon Server los implementan. Úsalo cuando el usuario pregunte sobre "DCB", "límite de consistencia dinámico", "límite de consistencia", "matar el agregado", modelado de consistencia entre múltiples entidades, "EventCriteria", "@EventCriteriaBuilder", "@EventTag", "@EventSourcedEntity", "Tag", tags vs streams, "AppendCondition", "SourcingCondition", "ConsistencyMarker", concurrencia optimista en el almacén de eventos, cómo elegir.

Introducción

Los Límites de Consistencia Dinámicos (DCB) representan un avance significativo en el modelado de consistencia dentro de sistemas basados en eventos. Axon Framework 5 y Axon Server proporcionan un conjunto de herramientas y anotaciones para implementar DCB de manera sencilla y eficiente.

Conceptos Clave

Tags y Streams

  • Tags: Etiquetas que se asignan a eventos para agruparlos según criterios de consistencia. Se definen mediante la anotación @EventTag.
  • Streams: Flujos de eventos que pueden filtrarse por tags. Los streams permiten consultar eventos que cumplen con ciertos criterios de consistencia.

EventCriteria

EventCriteria es una interfaz que permite definir condiciones para seleccionar eventos. Se utiliza en conjunto con @EventCriteriaBuilder para construir consultas complejas.

AppendCondition y SourcingCondition

  • AppendCondition: Define condiciones que deben cumplirse al agregar nuevos eventos, garantizando la consistencia en escritura.
  • SourcingCondition: Define condiciones para la reconstrucción del estado a partir de eventos previos, asegurando la consistencia en lectura.

ConsistencyMarker

ConsistencyMarker es un marcador que indica el nivel de consistencia requerido para una operación. Puede ser utilizado para controlar la propagación de eventos y garantizar la coherencia.

Anotaciones Principales

AnotaciónDescripción
@EventSourcedEntityMarca una entidad como fuente de eventos.
@EventCriteriaBuilderConstruye criterios para seleccionar eventos.
@EventTagDefine una etiqueta para agrupar eventos.

Cómo Implementar DCB

  1. Identificar los límites de consistencia: Determinar qué entidades deben mantenerse consistentes entre sí.
  2. Definir tags: Usar @EventTag para etiquetar eventos relevantes.
  3. Configurar AppendCondition y SourcingCondition: Establecer condiciones que garanticen la consistencia.
  4. Utilizar EventCriteria: Filtrar eventos según los tags definidos.
  5. Optimizar con streams: Elegir entre tags y streams según las necesidades de rendimiento y consistencia.

Ejemplo Práctico

@EventSourcedEntity
@EventTag(name = "customer", value = "123")
public class Customer {
    // ...
}

En este ejemplo, la entidad Customer está etiquetada con un tag que la asocia a un cliente específico. Esto permite que los eventos relacionados con este cliente se agrupen y se mantengan consistentes.

Consideraciones

  • Elegir entre tags y streams: Los tags son más flexibles pero pueden tener mayor sobrecarga. Los streams son más eficientes para consultas específicas.
  • Concurrencia optimista: Usar ConsistencyMarker para manejar conflictos de concurrencia.
  • "Matar el agregado": Con DCB, ya no es necesario forzar la eliminación de agregados; los tags y condiciones dinámicas permiten una gestión más granular.

Recursos Adicionales

  • Documentación oficial de Axon Framework 5
  • Guía de Axon Server
  • Ejemplos de código en GitHub

Skills relacionados