Tópicos do Pub/Sub
A tópico contém a própria mensagem, juntamente com informações adicionais do assinante e do editor. o ITopic/Topic
interface no Pub/Sub facilita criar um tópico, definir a prioridade do tópico durante a criação, obter um tópico, excluir um tópico simplesmente e assincronamente.
Note
Este recurso também está disponível em NCache Professional.
Pré-requisitos
- Para aprender sobre os pré-requisitos padrão necessários para trabalhar com todos os NCache recursos do lado do cliente, incluindo Pub/Sub, consulte a página fornecida em Pré-requisitos da API do lado do cliente.
- Para obter detalhes da API, consulte: ICache, Item de cache, Tópico, Criar tópico, Obter tópico, Excluir tópico, Prioridade do tópico, ExcluirTopicAsync.
Criar Tópico
Criar tópico O método cria um tópico no cache com um nome especificado. Se o tópico já existir, uma instância do tópico será retornada como ITopic
. Sempre que uma mensagem é publicada sobre um tópico, ela é entregue com base na preferência da mensagem aos assinantes cadastrados naquele tópico. O exemplo a seguir cria um tópico pedidoTópico.
// Precondition: Cache is already connected
// Mention the name of the topic
string topicName = "orderTopic";
// Create the topic
ITopic topic = cache.MessagingService.CreateTopic(topicName);
Note
Para garantir que a operação seja à prova de falhas, é recomendável lidar com possíveis exceções em seu aplicativo, conforme explicado em Como lidar com falhas.
Criar tópico com prioridade
Note
Este recurso está disponível apenas em NCache 5.2 em diante.
NCache O Pub/Sub permite definir prioridade do tópico para priorizar a entrega de mensagens críticas. A prioridade é especificada usando o TopicPriority
propriedade como Low
, Normal
e High
. Caso a remoção esteja habilitada, os tópicos com menor prioridade serão removidos primeiro e os de alta prioridade serão removidos por último. Os tópicos criados sem prioridade especificada serão criados com a prioridade padrão, ou seja, Normal.
importante
A prioridade de um tópico pode ser especificada somente no momento da criação do tópico e não pode ser modificada posteriormente.
O exemplo a seguir cria um tópico, pedidoTópico, com prioridade tão alta para evitar o despejo antecipado (se o despejo estiver ativado).
// Mention the name of the topic
string topicName = "orderTopic";
// Create the topic with priority
ITopic topic = cache.MessagingService.CreateTopic(topicName, Alachisoft.NCache.Runtime.Messaging.TopicPriority.High);
Obter tópico
Obter tópico O método busca uma instância do tópico especificado do cache. Se o tópico existir, ele será retornado, caso contrário, será lançada uma exceção. O exemplo a seguir obtém um tópico existente pedidoTópico da cache.
// Mention the name of the topic
string topicName = "orderTopic";
// Get the topic from the cache
ITopic orderTopic = cache.MessagingService.GetTopic(topicName);
// Verify successful topic retrieval
if (orderTopic != null)
{
// orderTopic will be used for receiving and/or publishing messages
}
else
{
// No topic exists
}
Excluir tópico
Excluir tópico O método cancela o registro do tópico do cache e remove todas as mensagens associadas a esse tópico. Se registrado, um retorno de chamada de exclusão de tópico OnTopicDeleted
será acionado nesta chamada de método.
O exemplo a seguir exclui o tópico existente pedidoTópico do cache e remove todas as mensagens associadas a esse tópico. Se o OnTopicDeleted
callback for registrado, ele será acionado nesta chamada de método.
// Define the topic to be deleted
string topicName = "orderTopic";
// Delete the topic "orderTopic"
cache.MessagingService.DeleteTopic(topicName);
// Callback will be triggered if registered
Excluir tópico de forma assíncrona
ExcluirTopicAsync O método exclui o tópico de forma assíncrona. Sempre que um tópico é excluído de forma assíncrona, Task
é retornado ao usuário para executar tarefas adicionais sem esperar que o tópico seja excluído. O exemplo a seguir mostra a exclusão assíncrona do tópico orderTopic
.
// Define the topic to be deleted
string topicName = "orderTopic";
// Delete the topic "orderTopic"
Task task = cache.MessagingService.DeleteTopicAsync(topicName);
// Use task to perform further operations according to business logic
// Callback will be triggered if registered
Propriedades da Interface ITopic
Membros | Formato | Descrição |
---|---|---|
MessageDeliveryFailure |
MessageDeliveryFailureCallback |
Evento no tópico para que o editor receba todas as mensagens com falha que não foram entregues a nenhum assinante ou talvez as mensagens tenham expirado ou sido removidas antes da entrega. |
Name |
string |
Nome do tópico especificado durante a criação do tópico. |
OnTopicDeleted |
TopicDeletedCallback |
Evento para lidar com a exclusão do tópico pelo editor e pelo assinante. |
ExpirationTime |
TimeSpan |
Se a expiração de nível de mensagem não for fornecida, essa expiração de nível de tópico expirará as mensagens no tópico por padrão. O valor é TimeSpan.MaxValue por padrão. |
IsClosed |
bool |
Verifique se o tópico está descartado, antes de realizar qualquer operação. |
Dispose |
IDisposable |
Remove a assinatura do tópico registrado do servidor de cache. |
Recursos adicionais
NCache fornece um aplicativo de amostra para Pub/Sub em GitHub.
Veja também
.INTERNET: Alachisoft.NCache.Runtime.Cache espaço para nome.
Java: com.alachisoft.ncache.runtime.caching espaço para nome.
Node.js: Tema classe.
Pitão: ncache.Serviço para clientes classe.