Service Stack Redis在Redis服务器重启后重新连接

6
我们正在使用Service Stack的RedisClient的BlockingDequeue来保存一些数据,直到可以处理它们。调用代码如下:
 using (var client = ClientPool.GetClient())
            return client.As<TMessage>().Lists[_channel].BlockingDequeue(timeout);

如果托管Redis的服务器重新启动,则BlockingDequeue的连接将变为僵尸状态,并且直到客户端应用程序重新启动才会返回。我们尝试设置BlockingDequeue和PooledConnectionManager上的超时时间,但都没有帮助,我猜想是因为超时时间在服务器端执行。服务堆栈中是否内置了这种容错能力,我们是否遗漏了它?还是说这是我们的实现应该处理的问题?如果是这样,有什么推荐的方法?
1个回答

2
我们在ServiceStack.Redis订阅代码中遇到了同样的问题,我们尝试了一些设置,例如重试次数(retrycount)、重试超时时间(retrytimeout)等,但都没有起作用。后来,我们的解决方法是捕获RedisException并重新进行订阅。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接