分类: 中间件

基于特性标注 + 泛型驱动的 RabbitMQ 客户端封装实战:把消息发送变成一行代码

生产项目里接入 RabbitMQ 最烦的是每次发消息前都要写一长串 ExchangeDeclare + QueueDeclare + QueueBind 模板代码。本文从 SwitchData 项目源码中拆解一套声明式封装:用 [RabbitMqQueue] 特性标注消息模型类,用 ConcurrentDictionary 做拓扑缓存和反射缓存,用 SemaphoreSlim 做异步锁延迟创建单例连接,用泛型 SendMessageAsync<T> 让调用方只需要传消息对象本身。附带死信队列自动声明、延迟消息插件支持、手动 ACK/NACK 异常兜底、AutomaticRecoveryEnabled 自动重连等生产级能力,整个客户端不到 400 行却把 RabbitMQ.Client 裸 API 包装成了'一行代码发消息'的干净调用。

Swagger 多态文档实战:JsonPolymorphic + Swashbuckle oneOf 让接口继承体系一目了然

Web API 有基类+多子类的继承体系(如 ReviewBase 派生 Excel/TXT/Database 三种导入请求),Swagger 默认只展示基类导致前端看不到子类字段。本文介绍用 System.Text.Json 的 JsonPolymorphic + JsonDerivedType 特性让运行时支持多态,再配合 Swashbuckle 的 UseOneOfForPolymorphism 自动生成 OpenAPI oneOf Schema,以及手动 DocumentFilter 和自定义 OperationFilter 两种备用方案,让 Swagger UI 直接展示子类下拉选择。

RabbitMQ高级特性详解

深入 RabbitMQ 生产级特性:消息持久化与投递确认(Publisher Confirm/Consumer ACK)、死信队列(DLX)、延迟队列、优先级队列、惰性队列,保障消息不丢与业务可靠。

RabbitMQ六种队列模式

逐一解析 RabbitMQ 的六种经典通信模式:简单队列、Work Queues、Publish/Subscribe(Fanout)、Routing(Direct)、Topics、Headers、RPC,配合 Exchange 路由键与绑定关系图,快速掌握选型。

消息队列入门:概念与场景

从生产者-消费者模型出发,介绍消息队列(MQ)的三大核心价值:异步解耦、流量削峰、日志与通知,结合订单、秒杀、短信等真实场景说明何时应该引入 MQ。