Exportar (0) Imprimir
Expandir Tudo

Notificações (cache na função para cache do Azure)

Atualizado: julho de 2010

noteObservação
Para orientação sobre como escolher a oferta Azure Cache para seu aplicativo, consulte Qual oferta de cache do Azure é ideal para mim?.

O Azure oferece notificações de cache que permitem que seus aplicativos recebam notificações assíncronas quando diversas operações de cache ocorrem no cluster de cache. Notificações de cache também fornecem invalidação automática de objetos armazenados localmente em cache.

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.

Só há suporte a notificações quando o Cache na Função na função é usado. O Shared Caching não oferece suporte a notificações. Isso também significa que não é possível usar notificações para invalidar o cache local no Shared Caching.

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

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

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 for adicionado ao cache.

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

  • RemoveItem: quando um item for removido do cache.

noteObservaçã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.

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: se quiser ser notificado sobre operações de cache baseadas em região e item que ocorram em todas as regiões e itens.

  • AddRegionLevelCallback: se quiser ser notificado sobre operações de cache baseadas em região e item que ocorram em uma região específica.

  • AddItemLevelCallback: se quiser ser notificado sobre operações de cache baseadas em item que ocorram em um item específico.

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.

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

noteObservaçã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 diferentes chaves; o método CompareTo pode retornar um resultado, mas esse resultado só é válido para versões da mesma chave.

Quando você usa notificações de cache, o aplicativo comunica-se com o cluster de 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. Um intervalo de consulta específico também pode ser definido programaticamente com a propriedade NotificationProperties do objeto DataCacheFactoryConfiguration.

Os hosts de cache só podem conter uma certa 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 host de cache. Os clientes de cache também podem não receber notificações quando os dados são perdidos em razão de uma falha do servidor de cache enquanto o restante do cluster permanece em execução. Nesses casos, o cliente de cache pode descobrir que deixou de receber algumas notificações de cache usando uma notificação de falha. O aplicativo pode adicionar um retorno de chamada para receber notificações de falha usando o método AddFailureNotificationCallback. Para obter mais informações, consulte How to: Add a Failure Notification Callback

Há uma importante distinção entre perda de notificações e perda do cluster de 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 cluster de cache for interrompido, reiniciado ou perdido de qualquer outra maneira, nenhuma notificação será disparada. Em vez disso, o cliente de cache gerará exceções na próxima vez que tentar usar o cache se não conseguir se conectar ao cluster. Certos eventos de cluster de cache, como a criação ou exclusão de um cache , não são informados por meio de notificações. Se o cache é excluído do servidor depois de registrar notificações, o recebimento de notificações é simplesmente interrompido. Não é possível diferenciar entre a inexistência de um cache e a ausência de execução de operações em um cache.

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

O recurso de notificações de cache é configurado no nível de cache nos parâmetros de configuração do cluster. Essa é uma propriedade de cache que pode ser ativada quando o cache é criado. Por padrão, o recurso de notificações de cache está desativado quando um novo cache é criado.

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 quiser usar uma duração diferente, use o elemento clientNotification no arquivo de configuração do aplicativo, baseado em XML, ou especifique o intervalo desejado programaticamente com a propriedade NotificationsProperties do objeto DataCacheFactoryConfiguration.

Depois que as notificações de cache são ativadas, existem 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

Mostrar:
© 2014 Microsoft