Erros de conexão do Redis ao usar o cliente Booksleeve Redis na VM do Azure

Recentemente, comecei a hospedar um projeto paralelo meu nas novas VMs do Azure. O aplicativo usa Redis como um cache na memória. Tudo estava funcionando bem no meu ambiente local, mas agora que mudei o código para o Azure, estou vendo algumas exceções estranhas saindo do Booksleeve.

Quando o primeiro aplicativo é acionado, tudo funciona bem. No entanto, após cerca de 5 a 10 minutos de inatividade, a próxima solicitação ao aplicativo passa por uma exceção de rede (estou trabalhando agora e não tenho as mensagens de erro exatas em mim, então as publicarei quando chegar em casa se as pessoas acham que são relevantes para a discussão) Isso faz com que o MessageQueue interno seja fechado, o que resulta em todas as Enfileiradas subsequentes () lançando uma exceção ("A Fila Está Fechada").

Então, depois de algum googling eu encontrei este post SO:Mantendo uma conexão aberta do Redis usando BookSleeve sobre um gerenciador de conexões DIY. Eu certamente posso implementar algo semelhante se esse for o melhor curso de ação.

Então, perguntas:

É normal que o RedisConnection feche periodicamente após um determinado período de tempo?Eu vi oconn.SetKeepAlive() método, mas eu tentei muitos valores diferentes e nenhum parece fazer a diferença. Há mais nisso ou estou latindo na árvore errada?A ideia do gerenciador de conexões do post acima é a melhor maneira de lidar com esse cenário?Alguém pode esclarecer por que hospedar minha instância do Redis em uma nova VM do Azure causa esse problema? Também posso confirmar que, se eu executar meu ambiente local na VM do Azure Redis, eu experimentei esse problema.

Como eu disse, se é incomum que uma conexão com o Redis morra após a inatividade, vou postar os rastros e exceções da pilha dos meus registros quando chegar em casa.

Obrigado!

ATUALIZAR Didier apontou nos comentários que isso pode estar relacionado ao balanacer de carga que o Azure usa:http://blogs.msdn.com/b/avkashchauhan/archive/2011/11/12/windows-azure-load-balancer-timeout-details.aspx

Supondo que esse seja o caso, qual seria a melhor maneira de implementar um gerenciador de conexões que poderia explicar esse problema. Eu suponho que não deveria criar uma conexão por unidade de trabalho, certo?

questionAnswers(2)

yourAnswerToTheQuestion