ServiceStack.Redis RedisSentinelWorker 和 RedisPubSubServer 之间的关系
ServiceStack.Redis relationship between RedisSentinelWorker and RedisPubSubServer
描述:
我很好奇RedisSentinelWorker和RedisPubSubServer是什么关系
根据我的观察,即使有更多的哨兵主机可用,库也最多保持 1 个活动的哨兵连接。该哨兵连接包装在 RedisSentinelWorker 中,它在幕后包装 RedisPubSubServer。
令我困扰的是,RedisSentinelWorker 和 RedisPubSubServer 实际上可能代表与两个不同哨兵的连接。
这就是发生这种情况的原因:
var sentinel = new RedisSentinel(new[] {"localhost:26380", "localhost:26381", "localhost:26382"});
var manager = sentinel.Start();
当我们到达时 ServiceStack.Redis.RedisSentinelWorker.BeginListeningForConfigurationChanges
监听应该从 sentinel localhost:26380 开始。但是当你到达 ServiceStack.Redis.RedisPubSubServer.RunLoop
- 我们用来建立 pub/sub 连接的实际哨兵实际上是 localhost:26381.
发生这种情况是因为我们传递给 RedisPubSubServer
的 ClientsManager
对象下的循环机制。在 pub/sub 连接建立之前,我们实际上调用了 ClientsManager
两次。
- 在
ServiceStack.Redis.RedisPubSubServer.Init
内获取服务器时间。它返回 localhost:26380.
- 在
ServiceStack.Redis.RedisPubSubServer.RunLoop
内部实际建立订阅。它现在 returns localhost:26381.
所以我的问题是:这是故意的还是这是一个错误?
RedisPubSubServer
提供托管 Pub/Sub Server 用于处理 Redis Pub/Sub 消息。
RedisSentinelWorker
使用 RedisPubSubServer
来侦听哨兵消息,它正在寻找连接到任何可用的活动哨兵主机以获取哨兵消息事件,但我可以看到如何更直观地只查看工作人员当前配置的哨兵主机,因此我更改了 this commit 中的行为,它将在下一个 v5.11 版本中提供。
描述:
我很好奇RedisSentinelWorker和RedisPubSubServer是什么关系
根据我的观察,即使有更多的哨兵主机可用,库也最多保持 1 个活动的哨兵连接。该哨兵连接包装在 RedisSentinelWorker 中,它在幕后包装 RedisPubSubServer。
令我困扰的是,RedisSentinelWorker 和 RedisPubSubServer 实际上可能代表与两个不同哨兵的连接。
这就是发生这种情况的原因:
var sentinel = new RedisSentinel(new[] {"localhost:26380", "localhost:26381", "localhost:26382"});
var manager = sentinel.Start();
当我们到达时 ServiceStack.Redis.RedisSentinelWorker.BeginListeningForConfigurationChanges
监听应该从 sentinel localhost:26380 开始。但是当你到达 ServiceStack.Redis.RedisPubSubServer.RunLoop
- 我们用来建立 pub/sub 连接的实际哨兵实际上是 localhost:26381.
发生这种情况是因为我们传递给 RedisPubSubServer
的 ClientsManager
对象下的循环机制。在 pub/sub 连接建立之前,我们实际上调用了 ClientsManager
两次。
- 在
ServiceStack.Redis.RedisPubSubServer.Init
内获取服务器时间。它返回 localhost:26380. - 在
ServiceStack.Redis.RedisPubSubServer.RunLoop
内部实际建立订阅。它现在 returns localhost:26381.
所以我的问题是:这是故意的还是这是一个错误?
RedisPubSubServer
提供托管 Pub/Sub Server 用于处理 Redis Pub/Sub 消息。
RedisSentinelWorker
使用 RedisPubSubServer
来侦听哨兵消息,它正在寻找连接到任何可用的活动哨兵主机以获取哨兵消息事件,但我可以看到如何更直观地只查看工作人员当前配置的哨兵主机,因此我更改了 this commit 中的行为,它将在下一个 v5.11 版本中提供。