Notificações para o serviço de cache gerenciado do Azure

Importante

A Microsoft recomenda que todos os novos desenvolvimentos usem o Cache Redis do Azure. Para obter documentação e diretrizes atuais sobre como escolher uma oferta do Cache do Azure, confira qual oferta do Cache do Azure é certa para mim?

Microsoft Azure Cache oferece notificações de cache que permitem que seus aplicativos recebam notificações assíncronas quando ocorrem várias operações de cache em um cache nomeado. A notificações de cache também fornecem invalidação automática de objetos armazenados em cache localmente.

Para receber notificações de cache assíncronas, adicione um retorno de chamada de notificação de cache ao seu aplicativo. Ao adicionar um retorno de chamada, você define os tipos de operações de cache que disparam uma notificação de cache e os métodos que deverão ser chamados no aplicativo quando as operações especificadas ocorrerem. Um cache nomeado deve aceitar e ter as notificações de cache ativadas.

Observação

As notificações estão disponíveis nas ofertas de cache Standard e Premium, mas não na oferta de cache Basic. Para obter mais informações, consulte Ofertas de Cache para Serviço de Cache Gerenciado do Azure.

Disparando notificações de cache

Essas operações de cache são definidas por membros da classe DataCacheOperations .

Operações de região

O aplicativo pode receber notificações de cache quando as seguintes operações de cache ocorrerem em uma região:

Operações de item

O aplicativo pode receber notificações de cache quando as seguintes operações de cache ocorrerem em um objeto armazenado em cache (designado como um item dentro do cache).

  • AddItem: quando um item é adicionado ao cache.

  • ReplaceItem: quando um item é substituído no cache.

  • RemoveItem: quando um item é removido do cache.

Observação

Por si sós, essas operações de item independem da ocorrência dentro de uma determinada região. Você pode optar por limitar o escopo de notificação do seu retorno de chamada a uma região específica. Isso é discutido na seção "Escopo de notificação" deste documento.

Escopo de notificação

Dependendo da atividade e das necessidades do aplicativo, talvez você não queira prestar atenção aos eventos de todos os objetos e regiões no cache inteiro. O escopo das suas notificações pode ser estreitado do nível de cache para o nível de região e para o nível de item. O escopo de notificação selecionado ao adicionar um retorno de chamada afeta significativamente as notificações de cache recebidas.

No nível de cache, o aplicativo pode ser notificado sobre todas as operações de cache de todos os objetos e regiões no cache. No nível de região, o aplicativo é notificado apenas sobre as operações de cache relativas a uma única região e aos objetos que ela contém. No nível de item, o aplicativo é notificado apenas sobre as operações de cache relativas a um único objeto.

Para especificar o escopo de notificação desejado, escolha um destes três métodos para adicionar um retorno de chamada de notificação de cache:

  • AddCacheLevelCallback: quando você deseja ser notificado sobre operações de cache baseadas em região e item que ocorrem em todas as regiões e itens.

  • AddRegionLevelCallback: quando você deseja ser notificado sobre operações de cache baseadas em região e item que ocorrem em uma região específica.

  • AddItemLevelCallback: quando você deseja ser notificado sobre operações de cache baseadas em item que ocorrem em um item específico.

Ordem de notificação

A ordem das notificações recebidas pelo cliente de cache é garantida no contexto de uma única região. Por exemplo, digamos que você tenha criado uma região chamada RegionA. Como todos os dados armazenados em uma região de cache são limitados à mesma região, todas as operações de cache relativas a RegionA (escopo de notificação em nível de região) chegam ao cliente de cache na ordem adequada em relação umas às outras. Não é garantido que as operações de cache baseadas em região e em item que ocorreram em outros hosts de cache cheguem na ordem adequada em relação às operações que ocorreram na RegionA.

Por razões de desempenho, não é possível garantir a ordem das notificações envolvendo mais de uma região ou objetos que não estejam armazenados na mesma região.

As informações de versão para eventos de item, na forma do objeto DataCacheItemVersion , são passadas para o método invocado pela notificação de cache com o version parâmetro. Esse objeto DataCacheItemVersion corresponde à versão do objeto que disparou o evento de item. Usando o método CompareTo , você pode comparar versões para determinar quais operações de cache vieram primeiro.

Observação

As comparações de versão só fazem sentido quando são comparadas versões do mesmo item especificadas com a mesma chave. Não é possível deduzir a ordem comparando versões de chaves diferentes; O método CompareTo pode retornar um resultado, mas o resultado só é válido para versões da mesma chave.

Intervalo de consulta

Quando você usa notificações de cache, o aplicativo comunica-se com o cache em intervalos regulares para verificar se há novas notificações disponíveis. Por padrão, esse intervalo, chamado de intervalo de consulta, é de 300 segundos. Aplicativos que executem muitas operações de gravação podem definir um valor menor, mas um intervalo maior pode ser mais eficaz para caches que não mudem com frequência. O padrão de 300 segundos é adequado para a maioria dos caches genéricos.

O intervalo de consulta é especificado em unidades de segundos nos parâmetros de configuração do aplicativo. Para definir um intervalo específico, você pode usar o atributo pollInterval do elemento clientNotifications no arquivo de configuração do aplicativo. Você também pode especificar um intervalo de sondagem específico programaticamente com a NotificationProperties propriedade do objeto DataCacheFactoryConfiguration .

Quando as notificações são perdidas

Microsoft Azure Cache pode conter apenas uma determinada quantidade de operações de cache na memória. É possível que alguns clientes de cache não recebam as notificações antes que estas sejam truncadas nas filas de notificação. Os clientes de cache também podem deixar de receber as notificações quando ocorre perda de dados por falha de cache. Nesses casos, o cliente de cache pode descobrir que deixou de receber algumas notificações de cache usando uma notificação de falha. Seu aplicativo pode adicionar um retorno de chamada para receber notificações de falha usando o método AddFailureNotificationCallback . Para obter mais informações, consulte Como adicionar um retorno de chamada de notificação de falha

Quando o cache é perdido

Há uma importante distinção entre perda de notificações e perda do cache. Quando deixa de receber uma ou mais notificações, o aplicativo pode tomar ciência dessa perda por meio de uma notificação de falha. Se todo o cache for excluído, o cliente de cache gerará exceções na próxima vez que tentar usá-lo, porque não conseguirá se conectar ao ponto de extremidade do cache. Certos eventos de cache, como a criação ou exclusão de um cache nomeado, não são informados por meio de notificações. Quando um cache nomeado é excluído depois de registrar notificações, o cliente simplesmente para de receber notificações. Não é possível diferenciar entre a inexistência de um cache nomeado e a ausência de execução de operações em um cache nomeado.

Observação

As notificações de cache só informam alterações relacionadas a dados nas regiões e itens do cache; elas não descrevem eventos do próprio cache.

Ativando notificações de cache

As notificações são configuradas no nível de cache nomeado no Portal de Gerenciamento, na guia Configurar do Cache. A configuração padrão para notificações é Desativado.

Cache Notifications for Windows Azure Cache Servic

Nenhum parâmetro de configuração de aplicativo é necessário para adicionar um retorno de chamada a fim de receber notificações de cache. Você pode usar os parâmetros de configuração do aplicativo para definir um intervalo de consulta específico. Por padrão, o intervalo de consulta é de 300 segundos. Se você quiser uma duração diferente, use o clientNotification elemento no arquivo de configuração de aplicativo baseado em XML ou especifique o intervalo desejado programaticamente com a NotificationsProperties propriedade do objeto DataCacheFactoryConfiguration .

Usando notificações de cache

Depois que as notificações de cache tiverem sido habilitadas, há três tarefas relacionadas ao uso de notificações de cache: adicionar retornos de chamada de notificação de cache, adicionar um retorno de chamada de notificação de falha e remover retornos de chamada de notificação de cache. Os procedimentos de cada uma dessas tarefas são descritos no restante desta documentação.

Consulte Também

Outros recursos

Recursos do serviço de cache gerenciado do Azure