Redis Streams × 消费组:在 ABP 中实现轻量事件流

Redis Streams × 消费组:在 ABP 中实现轻量事件流 🚀



0) 摘要(TL;DR)🧩

Redis Streams + Consumer GroupABP vNext(.NET 8) 中实现一条轻量事件流通道

  • ✅ 单依赖、低时延;支持 回溯重放XAUTOCLAIM 自动接管DLQ 侧写幂等去重多租户隔离
  • 🏗️ 在 ABP 中以 IStreamBus + BackgroundService 集成,配套 docker-compose健康检查Testcontainers 集成测试
  • 🔀 与 Kafka/RabbitMQ 的边界:Streams 提供有序追加日志 + 消费组位点修剪;需要长期留存/生态/审计选 Kafka,复杂路由/协议/延迟队列选 RabbitMQ
  • 🧠 关键命令:XADD / XREADGROUP / XACK / XAUTOCLAIM / XGROUP / XINFO

1) 为什么选 Redis Streams(与 RabbitMQ/Kafka 的边界)🧠

  • 🧳 轻运维/单依赖:已有 Redis 的团队可直接获得持久队列语义消费组位点回溯能力
  • 📚 顺序与保留:流内有序 + 位点;配合 MAXLEN/~ 近似修剪控制容量;极长留存/跨域汇聚倾向 Kafka
  • 🧭 路由复杂度:复杂路由/延迟/优先级/多协议 → RabbitMQ;本文聚焦同域解耦 + 低时延 + 轻运维

2) 架构与最小可运行骨架 🏗️

2.1 总体架构图

Consumer App(ABP 应用)
Redis
Producer App(ABP 应用)
XADD [MAXLEN ~N]
XREADGROUP ( > )
Handle()
XACK
超时 Pending → XAUTOCLAIM
侧写失败
BackgroundService / Consumer
Handlers\n(Scoped + ICurrentTenant)
Streams: stream:order
DLQ: dlq:order
IStreamBus.PublishAsync

2.2 端到端时序图

Producer Redis Stream Consumer Group Consumer Handler DLQ XADD stream fields [MAXLEN ~N] 1 XREADGROUP GROUP g c ID > (取新消息) 2 entries (batch) 3 Handle(entry) + 幂等去重 4 XACK stream g ids... 5 留在 PEL,等待 XAUTOCLAIM 接管
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kookoos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值