Service Stack の RedisClient の BlockingDequeue を使用して、一部のデータを処理できるようになるまで保持します。呼び出しコードは次のようになります
using (var client = ClientPool.GetClient())
return client.As<TMessage>().Lists[_channel].BlockingDequeue(timeout);
Redis をホストしているサーバーが再起動されると、BlockingDequeue の接続はゾンビ状態になり、クライアント アプリケーションが再起動されるまで戻りません。
BlockingDequeue と PooledConnectionManager でタイムアウトを設定しようとしましたが、サーバー側でタイムアウトが強制されているため、どちらも役に立ちませんでした。
このタイプのフォールト トレランスはサービス スタックに組み込まれているのでしょうか。
それとも、実装で処理する必要があるものですか? もしそうなら、推奨されるアプローチはありますか?