La comunicazione è la chiave. Soprattutto quando è presente un'applicazione distribuita con transazioni elevate con migliaia di entità debolmente accoppiate coinvolte. In tal caso, c'è un disperato bisogno di una comunicazione scalabile e flessibile tra diversi moduli per mantenere l'applicazione senza intoppi senza informazioni obsolete.
Poiché le nuove applicazioni emergenti si stanno spostando verso l'architettura basata su microservizi, ecco alcune domande fondamentali da considerare durante la progettazione dell'architettura di comunicazione di supporto delle applicazioni pertinenti.
- È scalabile?
- E 'affidabile?
- È efficiente in termini di archiviazione?
NCache è una cache distribuita in memoria ampiamente adottata per migliorare le prestazioni di .NET/ basati su microservizi .NET Core applicazioni. NCache ora fornisce una funzione Publisher-Subscriber (Pub/Sub) per abilitare un paradigma di messaggistica basato sugli eventi per queste applicazioni.
NCache Dettagli NCache Pub / Sub NCache Docs
Presentiamo NCache Pub / Sub
NCache fornisce una messaggistica Pub/Sub in memoria per consentire la condivisione di informazioni in tempo reale nelle applicazioni Web .NET. Il modello Pub/Sub disaccoppia naturalmente editori e abbonati fornendo un canale in cui i messaggi vengono pubblicati e sottoscritti dagli utenti interessati. Ora quando NCache funge da bus di messaggistica, il modello Pub/Sub trae vantaggio dal sottostante NCache architettura distribuita e numerosi a portata di mano Caratteristiche. Vedremo come combinare NCache e Pub/Sub possono affrontare le sfide di cui sopra e alla fine aiutare le tue applicazioni a comunicare meglio.
Potete vedere il componenti fondamentali di NCache Pub / Sub per comprendere le basi di questa funzione. Senza ulteriori indugi, vediamo prima come fare le cose per utilizzare la messaggistica Pub/Sub.
Istruzioni per l’uso: NCache Messaggistica Pub/Sub
Supponi di avere un'applicazione di e-commerce in cui devi essere informato di ogni nuovo prodotto aggiunto al negozio. Dal momento che può essere ottenuto utilizzando NCache Pub/Sub, devi prima farlo creare una cache. Si consiglia di avere una cache dedicata per Pub/Sub. Successivamente, discutiamo il processo passo dopo passo per creare un argomento per ricevere notifiche rilevanti per nuovi prodotti, pubblicare messaggi e iscriversi ai messaggi.
NCache Dettagli NCache Pub / Sub NCache Docs
Crea un argomento
NCache fornisce un ITopic
interfaccia per creare un argomento con un nome univoco. Ecco come l'applicazione dell'editore può creare un argomento con il nome Nuovi Prodotti usando il metodo CreateTopic
.
1 2 3 4 5 6 |
// Pre-condition: Cache is already connected // Specify the topic name string topicName = “newProducts” // Create topic ITopic topic = cache.MessagingService.CreateTopic(topicName); |
Se l'argomento esiste già, viene restituita un'istanza dell'argomento come ITopic
.
Può succedere che alcuni eventi siano più importanti e debbano essere comunicati non appena si verificano. Ad esempio, ricevere notifiche sui prodotti finiti/prodotti in vendita può essere molto importante per un venditore/acquirente. In tal caso, puoi impostare priorità dell'argomento ad alto durante la creazione dell'argomento e ricevere le notifiche pertinenti senza alcuna attesa.
Pubblica messaggi
Una volta creato un argomento, l'applicazione editore può pubblicare messaggi rilevanti per quell'argomento utilizzando Publish
metodo. Per questo, ottieni prima un'istanza dell'argomento fornendo il nome dell'argomento. Il codice seguente mostra come pubblicare un messaggio relativo a un nuovo prodotto in un argomento già esistente Nuovi Prodotti.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Pre-condition: Cache is already connected // Topic “newProducts” already created string topicName = “newProducts” // Get the topic ITopic productTopic = cache.MessagingService.GetTopic(topicName); // Create the object to be sent in message Product product = FetchProductFromDB(10248); // Create the new message with the object order var productMessage = new Message(product); // Publish the order with delivery option set as all orderTopic.Publish(productMessage, DeliveryOption.All, true); |
Essendo un editore, potrebbe essere necessario trasmettere determinati messaggi o recapitarli a qualsiasi in base allo scenario dell'applicazione. Ad esempio, se il prezzo di un prodotto viene aggiornato, tutti gli abbonati dovrebbero esserne informati. Tuttavia, questo potrebbe non essere sempre il caso. Tenendo ciò in vista, la modalità di consegna può essere specificata durante la pubblicazione dei messaggi. Le seguenti due opzioni di consegna dei messaggi sono fornite da NCache Pub / Sub.
- Tutti (predefinito): Recapita il messaggio a tutti gli abbonati registrati.
- Qualsiasi: Recapita il messaggio a qualsiasi abbonato registrato.
See opzioni di consegna per ulteriori dettagli.
Inoltre, per gestire in modo efficiente lo spazio di archiviazione della tua cache Pub/Sub, puoi anche impostare scadenze dei messaggi.
Iscriviti a un argomento
Dopo che un messaggio è stato pubblicato su un argomento, l'applicazione dell'abbonato crea una sottoscrizione su quell'argomento per ricevere messaggi utilizzando il file CreateSubscription
metodo. Il codice seguente mostra come un'applicazione di sottoscrizione può creare una sottoscrizione per l'argomento Nuovi Prodotti con MessageReceived
richiamare.
1 2 3 4 5 6 7 8 9 10 |
// Pre-condition: Cache is already connected // Topic “newProducts” already created string topicName = “newProducts” // Get the topic ITopic productTopic = cache.MessagingService.GetTopic(topicName); // Create and register subscribers for topic newProducts // MessageReceived callback is specified ITopicSubscription orderSubscriber = orderTopic.CreateSubscription(MessageReceived); |
Si supponga che l'applicazione dell'abbonato debba aggiornare i prezzi dei prodotti alla ricezione delle notifiche di vendita. Quindi, l'operazione di aggiornamento del prezzo prevista può essere eseguita nel MessageReceived
richiamare.
Un abbonamento creato nell'esempio precedente non è durevole e gli abbonamenti non sono durevoli per impostazione predefinita. Inoltre, puoi anche creare un abbonamento duraturo usando il NCache IDurableTopicSubscription
interfaccia. In caso di abbonamento durevole, NCache mantiene l'abbonamento di un abbonato in caso di perdita di connessione. Significa che i messaggi pubblicati su un argomento vengono assegnati alla sottoscrizione anche se l'abbonato è offline. Pertanto, l'abbonato può ricevere questi messaggi al momento della riconnessione.
Inoltre, puoi iscriverti a argomenti singoli/multipli che rientrano nel modello fornito utilizzando il metodo di abbonamento basato su pattern where NCache supporta più caratteri jolly.
Notifiche di registrazione
Essendo un editore, potrebbe essere necessario conoscere lo stato dei messaggi e la disponibilità degli argomenti. Vediamo a quale tipo di notifiche possono registrarsi le applicazioni del publisher durante l'utilizzo NCache Messaggistica Pub/Sub.
MessageDeliveryFailure:
per ricevere una notifica se il messaggio non è stato recapitato a causa di un problema.OnTopicDeleted:
per ricevere una notifica quando un argomento viene eliminato.
Ecco come l'editore può registrarsi semplicemente per questi due tipi di notifiche.
1 2 3 4 5 6 7 |
// You have an instance productTopic of existing topic // Register message delivery failure productTopic.MessageDeliveryFailure += OnFailureMessageReceived; //Register topic deletion notification productTopic.OnTopicDeleted = TopicDeleted; |
Perché NCache Pub/Sub per la messaggistica distribuita?
A questo punto, abbiamo familiarità con il NCache Funzione Pub/Sub. Ora, quali vantaggi fa Ncache Pub/Sub offre per gestire le domande sollevate inizialmente?
- NCache fornisce scalabilità lineare grazie al quale la tua applicazione può gestire senza problemi il numero crescente di richieste di abbonamento.
- NCache assicura il elevata disponibilità di NCache che ospita la connettività degli abbonati in ambienti dinamici.
- NCache consente la scadenza e gli sfratti degli elementi che risiedono nella cache per gestire in modo intelligente lo spazio di archiviazione.
Quindi, le funzionalità di cui sopra insieme all'accoppiamento libero e alla modalità di messaggistica asincrona di Pub/Sub make NCache Funzione Pub/Sub molto promettente per la messaggistica distribuita nelle tue future applicazioni .Net.