我们正在使用Service Stack的RedisClient的BlockingDequeue来保存一些数据,直到可以处理它们。调用代码如下:
如果托管Redis的服务器重新启动,则BlockingDequeue的连接将变为僵尸状态,并且直到客户端应用程序重新启动才会返回。我们尝试设置BlockingDequeue和PooledConnectionManager上的超时时间,但都没有帮助,我猜想是因为超时时间在服务器端执行。服务堆栈中是否内置了这种容错能力,我们是否遗漏了它?还是说这是我们的实现应该处理的问题?如果是这样,有什么推荐的方法?
using (var client = ClientPool.GetClient())
return client.As<TMessage>().Lists[_channel].BlockingDequeue(timeout);
如果托管Redis的服务器重新启动,则BlockingDequeue的连接将变为僵尸状态,并且直到客户端应用程序重新启动才会返回。我们尝试设置BlockingDequeue和PooledConnectionManager上的超时时间,但都没有帮助,我猜想是因为超时时间在服务器端执行。服务堆栈中是否内置了这种容错能力,我们是否遗漏了它?还是说这是我们的实现应该处理的问题?如果是这样,有什么推荐的方法?