用途:该技能面向 ABP 微服务的分布式事件高级模式,帮助构建具备弹性、可扩展性的事件驱动架构。资料给出的适用场景包括:处理来自其他微服务事件的处理器、构建幂等事件处理以应对重复投递、跨租户事件同步、设计事件驱动通信、实现 Saga/编排模式,以及排查事件投递问题。
主要能力:以事件传输对象(ETO)作为分布式事件负载,ETO 定义在发布方与订阅方可共同访问的共享库中;建议包含 TenantId 支持多租户、包含 CorrelationId 用于分布式追踪、仅使用基元类型、谨慎演进版本(只增属性不删除)。处理器模式涵盖基础事件处理器、幂等处理器(用 ProcessedEvent 记录 EventKey,重复事件直接跳过)、跨租户处理器(通过 IDataFilter.Disable<IMultiTenant>() 取消租户过滤,或用 ICurrentTenant.Change 切换租户上下文)、以及将业务逻辑委托给可测试服务。发布方式包括在应用服务中通过 IDistributedEventBus 发布,或在领域实体中添加上下文分布式事件;并可用 Outbox 模式让事件与数据库变更原子发布。高级模式还包括指数退避重试、Saga/编排模式与补偿事件、事件聚合批处理、死信队列处理与失败事件记录,以及事件处理器测试。
使用方式:处理器实现 IDistributedEventHandler< TEvent > 并注册 ITransientDependency;事件名可用 [EventName("patient.created")] 显式指定;发布用 IDistributedEventBus.PublishAsync;Outbox 通过 Configure<AbpDistributedEventBusOptions>(options => options.Outbox.IsEnabled = true) 开启。
限制:资料未提供该技能的安装命令、版本要求、收费与平台信息,均暂未提供;上述代码为示例,实际实现需结合项目环境验证。