ME-event.yaml 3.67 KB
# ME EDA事件驱动模型 (v2.1:新增 OrderAudited 事件)
# 页面提交完成后监听领域事件,自动刷新页面、弹窗反馈、触发异步补偿逻辑。
eventModel:
  globalConfig:
    idGenerator: snowflake
    bus: rocketmq
    retry: 3
    dlq: topic_msg_dlq
    outbox:
      enabled: true
      table: t_domain_outbox
      pollInterval: 1000ms
      batchSize: 50
      cleanupDays: 7

  aggregateEventDefinitions:
    - aggregateId: CustomerAggregate
      events:
        CustomerCreated:
          topic: topic_customer_create
          payload: [customerId, customerName, customerLevel]
          consumers: [customer-service]
        CustomerInfoModified:
          topic: topic_customer_modify
          payload: [customerId, contactPhone, customerLevel]
          consumers: [customer-service]

    - aggregateId: ProductAggregate
      events:
        ProductCreated:
          topic: topic_product_create
          payload: [productId, skuCode, salePrice, stockNum]
          consumers: [product-service]
        ProductPriceChanged:
          topic: topic_product_price
          payload: [productId, salePrice, saleCurrency]
          consumers: [order-service]
        ProductStockDeducted:
          topic: topic_stock_deduct
          payload: [productId, stockNum]
          consumers: [order-service]
        ProductStockReturned:
          topic: topic_stock_return
          payload: [productId, stockNum]
          consumers: [order-service]

    - aggregateId: OrderAggregate
      events:
        OrderCreated:
          topic: topic_order_create
          payload: [orderId, customerId, totalAmount]
          consumers: [product-service, customer-service]
        OrderItemAdded:
          topic: topic_order_item_added
          payload: [orderId]
          consumers: [order-service]
        OrderPaymentTermSet:
          topic: topic_order_payment_term_set
          payload: [orderId]
          consumers: [order-service]
        OrderDeliveryAddressSet:
          topic: topic_order_delivery_address_set
          payload: [orderId]
          consumers: [order-service]
        OrderDeliveryAddressModified:
          topic: topic_order_addr_modify
          payload: [orderId, receiverPhone]
          consumers: [order-service]
        OrderCancelled:
          topic: topic_order_cancel
          payload: [orderId, productIdList]
          consumers: [product-service]
        OrderAudited:
          topic: topic_order_audited
          payload: [orderId, orderStatus, auditorId, auditorName]
          consumers: [order-service]

    - aggregateId: EmployeeAggregate
      events:
        EmployeeCreated:
          topic: topic_employee_create
          payload: [employeeId, employeeName, department]
          consumers: [employee-service]
        EmployeeModified:
          topic: topic_employee_modify
          payload: [employeeId, employeeName, department, remark]
          consumers: [employee-service]

  # 跨聚合最终一致规则(结构化):
  #   sourceItemEntity 指明从触发聚合的哪个子实体取"逐项上下文";
  #   paramMap 把子实体字段映射为目标命令入参;引擎据此 + M2 命令的 effect 通用执行,无硬编码。
  crossAggConsistencyRules:
    - triggerEvent: OrderCreated
      sourceItemEntity: OrderItem
      targetAggregate: ProductAggregate
      targetCommand: StockDeduct
      paramMap:
        productId: productId
        deductQty: quantity
      consistencyType: eventual
    - triggerEvent: OrderCancelled
      sourceItemEntity: OrderItem
      targetAggregate: ProductAggregate
      targetCommand: StockReturn
      paramMap:
        productId: productId
        returnQty: quantity
      consistencyType: eventual