Temas de Pub/Sub
A tema contiene el mensaje en sí, junto con información adicional del suscriptor y del editor. los ITopic/Topic
La interfaz en Pub/Sub facilita crear un tema, establecer la prioridad del tema durante la creación, obtener un tema, eliminar un tema simplemente y de forma asíncrona.
Note
Esta característica también está disponible en NCache Professional.
Requisitos previos
- Para obtener información sobre los requisitos previos estándar necesarios para trabajar con todos NCache características del lado del cliente, incluido Pub/Sub, consulte la página proporcionada en Requisitos previos de la API del lado del cliente.
- Para obtener detalles de la API, consulte: Dolor, Artículo de caché, ITema, Crear tema, ObtenerTema, EliminarTema, TemaPrioridad, Eliminar temaAsync.
Crear tema
Crear tema El método crea un tema en la caché con un nombre específico. Si el tema ya existe, se devuelve una instancia del tema como ITopic
. Siempre que se publica un mensaje sobre un tema, se entrega según la preferencia del mensaje a los suscriptores que están registrados en ese tema. El siguiente ejemplo crea un tema. ordenTema.
// 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 garantizar que la operación sea a prueba de fallas, se recomienda manejar cualquier posible excepción dentro de su aplicación, como se explica en Manejo de fallas.
Crear tema con prioridad
Note
Esta función solo está disponible en NCache 5.2 y adelante.
NCache Pub/Sub te permite configurar prioridad del tema priorizar la entrega de mensajes críticos. La prioridad se especifica mediante el TopicPriority
propiedad como Low
, Normal
y High
. En caso de que el desalojo esté habilitado, los temas con menor prioridad se desalojan primero y los de mayor prioridad se desalojan al final. Los temas creados sin prioridad especificada se crearán con la prioridad predeterminada, es decir, Normal.
Importante:
La prioridad de un tema se puede especificar únicamente en el momento de su creación y no se puede modificar posteriormente.
El siguiente ejemplo crea un tema, ordenTema, con prioridad alta para evitar el desalojo anticipado (si el desalojo está habilitado).
// 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);
Obtener tema
ObtenerTema El método obtiene una instancia del tema especificado de la memoria caché. Si el tema existe, se devuelve; de lo contrario, se lanza una excepción. El siguiente ejemplo obtiene un tema existente ordenTema del caché.
// 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
}
Eliminar tema
EliminarTema El método cancela el registro del tema de la caché y elimina todos los mensajes asociados con ese tema. Si está registrado, una devolución de llamada para eliminar el tema OnTopicDeleted
se activará con esta llamada de método.
El siguiente ejemplo elimina el tema existente ordenTema del caché y elimina todos los mensajes asociados con ese tema. Si el OnTopicDeleted
se registra la devolución de llamada, se activará con esta llamada 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
Eliminar tema de forma asíncrona
Eliminar temaAsync El método elimina el tema de forma asíncrona. Cada vez que se elimina un tema de forma asíncrona, Task
se devuelve al usuario para realizar más tareas sin esperar a que se elimine el tema. El siguiente ejemplo muestra la eliminación asincrónica del tema. 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
Propiedades de la interfaz ITopic
Miembros | Tipo de Propiedad | Descripción |
---|---|---|
MessageDeliveryFailure |
MessageDeliveryFailureCallback |
Evento sobre el tema para que el editor reciba todos los mensajes fallidos que no se entregan a ningún suscriptor o que tal vez los mensajes caduquen o sean desalojados antes de la entrega. |
Name |
string |
Nombre del tema especificado durante la creación del tema. |
OnTopicDeleted |
TopicDeletedCallback |
Evento para gestionar la eliminación de temas por editor y suscriptor. |
ExpirationTime |
TimeSpan |
Si no se proporciona la caducidad del nivel de mensaje, esta caducidad del nivel de tema caduca los mensajes en el tema de forma predeterminada. el valor es TimeSpan.MaxValue por defecto |
IsClosed |
bool |
Verifique si el tema está desechado, antes de realizar cualquier operación. |
Dispose |
IDisposable |
Elimina la suscripción del tema registrado del servidor de caché. |
Recursos adicionales
NCache proporciona una aplicación de muestra para Pub/Sub en GitHub.
Vea también
.NETO: Alachisoft.NCache.Runtime.Caching espacio de nombres
Java: com.alachisoft.ncache.runtime.caching espacio de nombres
Nodo.js: Tema clase.
Pitón: ncache.servicios al cliente clase.