Redis 事件总线容器扩展(Aegis.EventBus.Container.Redis)
Aegis.EventBus.Container.Redis 用来把 Aegis.EventBus 的默认进程内消息容器替换成 Redis 容器。它解决的是消息存放位置和分发介质,不替代 Aegis.EventBus 本身。
组件概览
| 字段 | 说明 |
|---|---|
| 组件名称 | Redis 事件总线容器扩展 |
| 真实类库 | Aegis.EventBus.Container.Redis |
| 组件定位 | 事件总线 Redis 容器扩展 |
| 引入方式 | 安装 NuGet,并在代码里调用 AddContainer<T>() |
是否需要 Component.deps.json | 需要先启用 EventBus,当前扩展本身按代码接入 |
| 核心能力 | 基于 Redis 的 IMessageContainer 替换 |
| 典型配套 | Aegis.EventBus、Aegis.Caching.Redis |
什么时候要用它
适合场景:
- 你希望事件总线不再只限于进程内
- 你已经有 Redis 基础设施
- 你希望把消息容器统一切到 Redis
最小可运行路径
第一步:先启用 EventBus
{
"Components": {
"Services": [
"EventBus"
],
"Middlewares": []
}
}
第二步:准备 Redis 数据源
services.AddRedisSource<AegisRedisSource>(
ConfigManager.Get<RedisOptions>("Redis"));
第三步:替换默认消息容器
services.AddContainer<AegisRedisSource>();
这里的关键点是:
EventBus先负责注册IMessageSenderAddContainer<T>()再把IMessageContainer替换成 Redis 版本
第四步:发送和消费代码不需要改
await _messageSender.Send(new Message
{
MessageName = "UserChanged",
Data = dto,
CreatedTime = DateTime.Now
});
换容器后,发送端和消费端代码保持不变。
它和 EventBus 的关系
| 组件 | 负责什么 |
|---|---|
Aegis.EventBus | 消息发送、消费者扫描、后台消费处理 |
Aegis.EventBus.Container.Redis | 把消息容器切成 Redis |
所以这不是“二选一”的关系,而是“基础组件 + 容器扩展”的关系。
接入顺序建议
更稳的顺序是:
- 先接好 Redis 数据源
- 再启用
EventBus - 然后调用
AddContainer<T>()替换容器
如果你的 Redis 数据源都还没准备好,先不要单独接这个扩展。
接入后怎么确认已经生效
可以这样确认:
- 应用启动后没有 Redis 容器初始化异常
IMessageSender仍然可以正常注入- 发送消息后,消费链路仍然正常工作
常见问题
只安装这个扩展可以吗
不可以。
前面还需要先启用 事件总线。
换成 Redis 容器后,发送代码要不要改
不需要。
容器变化只影响消息的存放和读取,不影响 IMessageSender.Send(...) 的调用方式。
接这个扩展之前还要先做什么
至少要先把 Redis 基础能力接好。
也就是先具备可用的 RedisSource。