SuperAPI AI 工具集

dotnet-messaging-patterns

编程与开发

查看项目

更新于 10-16 01:26

技能介绍

用途:为 .NET 事件驱动系统提供持久化消息模式的实践指南,覆盖发布/订阅、竞争消费者、死信队列(DLQ)、Saga/流程管理器编排与投递保证策略,涉及 Azure Service Bus、RabbitMQ 与 MassTransit。

主要能力:区分命令(点对点队列)、事件(发布到主题/交换机)、文档三类消息;说明最多一次、至少一次、恰好一次投递保证,并指出至少一次加幂等消费者是持久消息的标准做法。介绍 Azure Service Bus 主题订阅和 RabbitMQ fanout 交换机的发布与订阅写法,以及 MassTransit 的 AddMassTransit、IPublishEndpoint、IConsumer 注册方式与包引用。竞争消费者部分说明多实例并行消费同一队列、MaxConcurrentCalls 与并发限制,以及用会话、单消费者或一致性哈希、UseMessagePartitioner 处理顺序需求。DLQ 部分列出死信原因(超过最大投递次数、TTL 过期、消费者拒绝、队列长度超限),给出 Azure Service Bus 死信与读取死信子队列、MassTransit 的 _error/_skipped 队列和重试配置,并强调监控 DLQ 深度。Saga 部分对比编排与协同,给出 MassTransit 状态机示例、关联 ID、与持久化存储(EF Core、MongoDB、Redis、内存)选择,以及补偿模式。幂等消费者部分给出基于数据库去重记录的实现和自然幂等做法。还包含消息信封模式用于追踪、版本与路由。

使用方式与限制:需按资料引用对应 NuGet 包(如 Azure.Messaging.ServiceBus、RabbitMQ.Client、MassTransit 及传输包)。注意事项包括:Azure Service Bus 不要用自动完成,应在处理成功后调用 CompleteMessageAsync;必须配置最大投递次数与 DLQ 监控;不要在生产使用内存 Saga 持久化;不要假设跨分区消息有序;至少一次消费必须做幂等;不要硬编码连接字符串。背景服务生命周期、弹性重试、序列化配置、Channel<T> 进程内队列均在本技能范围之外。具体定价与平台细节暂未提供。