Argomenti Pub/Sub
A argomento contiene il messaggio stesso, insieme a informazioni aggiuntive sull'abbonato e sull'editore. Il ITopic/Topic
l'interfaccia in Pub/Sub facilita creare un argomento, impostare la priorità dell'argomento durante la creazione, ottenere un argomento, eliminare semplicemente un argomento ed in modo asincrono.
Note:
Questa funzionalità è disponibile anche in NCache Professional.
Prerequisiti
- Per conoscere i prerequisiti standard richiesti per lavorare con all NCache Per le funzionalità lato client, incluso Pub/Sub, fare riferimento alla pagina specificata Prerequisiti dell'API lato client.
- Per i dettagli dell'API, fare riferimento a: ICache, CacheItem, Argomento, Crea argomento, GetTopic, Elimina argomento, Priorità argomento, EliminaargomentoAsync.
Crea Topic
Crea argomento Il metodo crea un argomento nella cache con un nome specificato. Se l'argomento esiste già, viene restituita un'istanza dell'argomento come ITopic
. Ogni volta che un messaggio viene pubblicato su un argomento, viene recapitato in base alle preferenze del messaggio agli abbonati registrati su quell'argomento. L'esempio seguente crea un argomento ordineArgomento.
// Precondition: Cache is already connected
// Mention the name of the topic
string topicName = "orderTopic";
// Create the topic
ITopic topic = cache.MessagingService.CreateTopic(topicName);
Note:
Per garantire che l'operazione sia a prova di errore, si consiglia di gestire eventuali potenziali eccezioni all'interno dell'applicazione, come spiegato in Gestione dei guasti.
Crea argomento con priorità
Note:
Questa funzione è disponibile solo in NCache 5.2 e successive.
NCache Pub/Sub consente di impostare priorità dell'argomento dare priorità alla consegna dei messaggi critici. La priorità viene specificata utilizzando il file TopicPriority
proprietà come Low
, Normal
e High
. Nel caso in cui lo sfratto sia abilitato, gli argomenti con la priorità minore verranno sfrattati per primi e quelli con la priorità alta verranno sfrattati per ultimi. Gli argomenti creati senza priorità specificata verranno creati con la priorità predefinita, ovvero Normale.
Consigli
La priorità di un argomento può essere specificata solo al momento della creazione dell'argomento e non può essere modificata successivamente.
L'esempio seguente crea un argomento, ordineArgomento, con priorità alta per evitare lo sfratto anticipato (se lo sfratto è abilitato).
// 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);
Ottieni argomento
GetTopic il metodo recupera un'istanza dell'argomento specificato dalla cache. Se l'argomento esiste, viene restituito, altrimenti viene generata un'eccezione. L'esempio seguente ottiene un argomento esistente ordineArgomento dalla 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
}
Elimina argomento
Elimina argomento Il metodo annulla la registrazione dell'argomento dalla cache e rimuove tutti i messaggi associati a quell'argomento. Se registrato, richiamata per l'eliminazione dell'argomento OnTopicDeleted
verrà attivato su questa chiamata al metodo.
L'esempio seguente elimina l'argomento esistente ordineArgomento dalla cache e rimuove tutti i messaggi associati a quell'argomento. Se la OnTopicDeleted
callback è registrato, verrà attivato su questa chiamata al metodo.
// Define the topic to be deleted
string topicName = "orderTopic";
// Delete the topic "orderTopic"
cache.MessagingService.DeleteTopic(topicName);
// Callback will be triggered if registered
Elimina argomento in modo asincrono
EliminaargomentoAsync il metodo elimina l'argomento in modo asincrono. Ogni volta che un argomento viene eliminato in modo asincrono, Task
viene restituito all'utente per eseguire ulteriori attività senza attendere l'eliminazione dell'argomento. L'esempio seguente mostra l'eliminazione asincrona dell'argomento 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
Proprietà dell'interfaccia ITopic
Utenti | Tipologia | Descrizione |
---|---|---|
MessageDeliveryFailure |
MessageDeliveryFailureCallback |
Evento sull'argomento in modo che l'editore riceva tutti i messaggi non riusciti che non sono stati recapitati a nessun abbonato o che i messaggi potrebbero essere scaduti o eliminati prima della consegna. |
Name |
string |
Nome dell'argomento specificato durante la creazione dell'argomento. |
OnTopicDeleted |
TopicDeletedCallback |
Evento per gestire l'eliminazione degli argomenti da parte dell'editore e dell'abbonato. |
ExpirationTime |
TimeSpan |
Se la scadenza a livello di messaggio non viene fornita, questa scadenza a livello di argomento fa scadere i messaggi nell'argomento per impostazione predefinita. Il valore è TimeSpan.MaxValue per impostazione predefinita. |
IsClosed |
bool |
Verificare se l'argomento è stato eliminato, prima di eseguire qualsiasi operazione. |
Dispose |
IDisposable |
Rimuove la sottoscrizione dell'argomento registrato dal server cache. |
Risorse addizionali
NCache fornisce un'applicazione di esempio per Pub/Sub su GitHub.
Vedere anche
.NETTO: Alachisoft.NCache.Memorizzazione.della.cache spazio dei nomi.
Giava: com.alachisoft.ncache.cache.di.runtime spazio dei nomi.
Node.js: Argomento classe.
Pitone: ncache.servizi.clienti classe.