我在Windows上使用ServiceStack 5.0.2和Redis 3.2.100。 我有几个节点有活跃的Pub / Sub Subscription和每秒几个Pub。
我注意到如果在没有物理网络连接的情况下重启Redis服务(因此其中一个客户端无法连接到Redis服务),该客户端会在网络恢复后停止接收任何消息。我们称之为“僵尸订户”:它认为它仍然可以运行,但实际上从未收到过消息:客户端认为它有连接,服务器上的相同连接已关闭。
问题是RedisSubscription.SubscribeToChannels中没有异常,因此我无法检测到该问题以便重新订阅。
我还分析了RedisPubSubServer,我想我发现了一个问题。在描述的情况下,RedisPubSubServer尝试重新启动(发送停止命令 CTRL ),但“zombie subscriber”没有收到它,也没有重新订阅。