跳到主要内容
版本:3.0.0

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.EventBusAegis.Caching.Redis

什么时候要用它

适合场景:

  • 你希望事件总线不再只限于进程内
  • 你已经有 Redis 基础设施
  • 你希望把消息容器统一切到 Redis

最小可运行路径

第一步:先启用 EventBus

{
"Components": {
"Services": [
"EventBus"
],
"Middlewares": []
}
}

第二步:准备 Redis 数据源

services.AddRedisSource<AegisRedisSource>(
ConfigManager.Get<RedisOptions>("Redis"));

第三步:替换默认消息容器

services.AddContainer<AegisRedisSource>();

这里的关键点是:

  • EventBus 先负责注册 IMessageSender
  • AddContainer<T>() 再把 IMessageContainer 替换成 Redis 版本

第四步:发送和消费代码不需要改

await _messageSender.Send(new Message
{
MessageName = "UserChanged",
Data = dto,
CreatedTime = DateTime.Now
});

换容器后,发送端和消费端代码保持不变。

它和 EventBus 的关系

组件负责什么
Aegis.EventBus消息发送、消费者扫描、后台消费处理
Aegis.EventBus.Container.Redis把消息容器切成 Redis

所以这不是“二选一”的关系,而是“基础组件 + 容器扩展”的关系。

接入顺序建议

更稳的顺序是:

  1. 先接好 Redis 数据源
  2. 再启用 EventBus
  3. 然后调用 AddContainer<T>() 替换容器

如果你的 Redis 数据源都还没准备好,先不要单独接这个扩展。

接入后怎么确认已经生效

可以这样确认:

  • 应用启动后没有 Redis 容器初始化异常
  • IMessageSender 仍然可以正常注入
  • 发送消息后,消费链路仍然正常工作

常见问题

只安装这个扩展可以吗

不可以。
前面还需要先启用 事件总线

换成 Redis 容器后,发送代码要不要改

不需要。
容器变化只影响消息的存放和读取,不影响 IMessageSender.Send(...) 的调用方式。

接这个扩展之前还要先做什么

至少要先把 Redis 基础能力接好。
也就是先具备可用的 RedisSource

配套阅读