Articoli

Come realizzare un pattern Pub/Sub con NestJS e RxJS

Nelle applicazioni moderne uno dei pattern più utilizzati è quello di avere un WebSocket permanentemente attivo che riceve direttamente da un Web Service eventi e dati ed aggiorna dinamicamente la Web Application senza ricaricare la pagina.

Questo pattern potrebbe essere sfruttato anche per realizzare ed integrare un altro tipo di pattern ormai comunissimo: il Pub/Sub, dove in un’applicazione, un processo o servizio(Publisher) sottoscrive (Subscribe) un argomento(topic) e riceve aggiornamenti automaticamente relativamente a quel determinato argomento. Normalmente per realizzare il pattern Pub/Sub si utilizzano tecnologie come Apache Pulsar o piattaforme cloud-based come Google Pub/Sub, mentre in questo caso scoprirai che è possibile realizzare una funzionalità di tipo Pub/Sub anche con il solo utilizzo di NestJS e di una libreria nativamente disponibile come RxJs.

Contattaci subito e senza impegno per un realizzare una soluzione applicativa di Pub/Sub.

NestJS e RxJS per logiche di Pub/Sub

Come dicevamo poc’anzi, grazie al popolare framework NestJS ed alla popolare libreria RxJS, è possibile realizzare una Web Application in cui è permanentemente attivo un WebSocket su un Web Service che espone i dati di un determinato argomento( nel caso di NextJS l’argomento, invece di identificarsi con il nome classico topic ,viene chiamato Subject).

RxJS è già integrata in NestJS ed è una reactive library che permette di attivare workload asincroni in maniera estesa ed avanzata ( per comprendere meglio il concetto del reactive programming puoi leggere il nostro precedente articolo “Reactive Programming – Cos’è“).

Grazie agli Observable, costrutti nati per gestire oggetti di informazioni asincrone, ed alle relative API è possibile ricreare il pattern Pub/Sub in quanto gli Observable sono proprio elementi che devono essere “subscribed” per poter essere utilizzati.

In particolare, per poter rendere efficace tale soluzione occorre sfruttare un altro strumento di RxJS, il Subject, che altro non è che una speciale tipologia di Observable e che permette ai valori di essere inviati in multipli Observer. Praticamente dato un Subject, è possibile sottoscrivere le sue informazioni attraverso uno o più Observer e per render le cose ancora più integrate anche un Subject può essere , a sua volta, un Observer. Tutto questo si traduce nel fatto che quando un Subject riceverà un cambiamento di valore questo verrà automaticamente propagato agli Observer del Subject. Il processo sembra complicato, in realtà sono poche decine di righe di codice e ti invitiamo a leggere il blog ufficiale di NestJS per maggiori dettagli tecnici.

Chiaramente non finisce qui perchè RxJS è una libreria avanzata pertanto puoi applicare al Subject o alle Observable, più in generale, strumenti di filtering e throttling o qualsiasi altro operatore sia necessario per la tua esigenza applicativa.

Contattaci subito e senza impegno per sfruttare NestJS per logiche di Pub/Sub.

Glue Labs e NestJS

Utilizziamo NestJS dalla sua nascita, realizziamo applicazioni, forniamo formazione avanzata, piani di assistenza tecnica anche in modalità Time & Material, consulenza enterprise e training on job. Grazie alla competenze maturate in tantissimi settori e con numerosi Clienti ti forniamo consulenza nel building e delivery di applicazioni NestJS con garanzia 12 mesi da qualsiasi bug. Contattaci subito e senza impegno per un preventivo gratuito.