Home topics Code di messaggi: Un'introduzione Cos'è una coda di messaggi?
Una coda di messaggi è un componente dei middleware di messaggistica che consente ad applicazioni e servizi indipendenti di scambiare informazioni.
Sfondo nero e blu
Cos'è una coda di messaggi?

Una coda di messaggi è un componente delle soluzioni di middleware di messaggistica che consente ad applicazioni e servizi indipendenti di scambiare informazioni. Le code dei messaggi archiviano i "messaggi", ovvero i pacchetti di dati che le applicazioni creano per essere utilizzati da altre applicazioni, nell'ordine in cui vengono trasmessi finché l'applicazione che li utilizza non potrà elaborarli. Ciò consente ai messaggi di attendere in modo sicuro finché l'applicazione di destinazione non sarà pronta; in questo modo, se si verifica un problema con la rete o nell'applicazione di destinazione, i messaggi nella coda dei messaggi non vanno persi.

Questo modello, noto come messaggistica asincrona, previene la perdita di dati e consente ai sistemi di continuare a funzionare anche in caso di malfunzionamento dei processi o delle connessioni. Ciò consente agli sviluppatori di mantenere separati processi e applicazioni, mantenendo le relative comunicazioni autonome e basate sugli eventi, in modo da rendere l'architettura più affidabile.

Le code dei messaggi sono disponibili nelle soluzioni di messaggistica di numerose opzioni di implementazione, inclusi dispositivi fisici ottimizzati, servizi cloud, mainframe e come software.

Vantaggi

Le soluzioni di accodamento dei messaggi sono ampiamente utilizzate in tutti i settori e possono offrire una serie di vantaggi sia agli sviluppatori che agli amministratori di sistema, inclusi i seguenti:

  • Recapito affidabile dei messaggi: l'utilizzo di una coda di messaggi può garantire che i messaggi business-critical tra le applicazioni non vadano persi e che vengano recapitati al destinatario solo una volta. Con questa funzione, non è necessaria ulteriore deduplicazione o logica di prevenzione delle perdite.

  • Connettività tra applicazioni: alcune soluzioni di code di messaggi possono gestire la crittografia dei messaggi, la transazionalità e altri aspetti delle comunicazioni tra applicazioni e servizi. Ciò semplifica lo sviluppo delle applicazioni e consente ad architetture eterogenee di lavorare insieme.

  • Versatilità: le soluzioni di code di messaggi supportano diversi linguaggi di programmazione, quali ad esempio Java, Node.js, COBOL, C/C++, Go, .NET, Python, Ruby e C#. Possono anche supportare numerose API (application programing interface) e protocolli, inclusi MQTT, AMQP e REST e altri ancora.

  • Resilienza: la messaggistica asincrona garantisce che gli errori specifici delle applicazioni non si ripercuotano sul sistema. Se un componente del sistema si blocca, tutti gli altri possono continuare a interagire con la coda e ad elaborare i messaggi. Ciò riduce la possibilità che la stabilità dell'intero sistema venga compromessa dal malfunzionamento di una parte di esso.

  • Migliore sicurezza: una coda di messaggi può essere in grado di identificare e autenticare tutti i messaggi e, in alcune soluzioni di code di messaggi, è possibile impostare la crittografia dei messaggi inattivi, in transito o end-to-end. Ciò può contribuire alla sicurezza complessiva delle applicazioni e/o dell'infrastruttura.

  • Trasferimento dei file integrato: alcune soluzioni di code di messaggi includono funzioni aggiuntive, come la possibilità di trasferire file. Questo può essere utilizzato come alternativa all'FTP, in aziende in cui tali soluzioni sono utilizzate.
Casi di utilizzo

Gli ambienti informatici aziendali odierni sono complessi e altamente decentralizzati. La messaggistica semplifica l'integrazione di applicazioni e servizi su piattaforme diverse fornendo un'unica struttura di messaggistica condivisa solida e sicura. Ciò protegge dalla perdita di dati e garantisce che i sistemi continuino a funzionare anche con una connettività instabile.

Le code di messaggi sono particolarmente adatte per l'integrazione dei sistemi di backend on-premise con i servizi cloud. Nelle architetture cloud, le applicazioni sono spesso suddivise in piccoli componenti indipendenti. Ciò ne semplifica la progettazione e codifica e anche la gestione delle prestazioni. Le code dei messaggi consentono a queste applicazioni disgiunte, basate su cloud, di comunicare tra loro o con i sistemi on-premise.

L'accodamento dei messaggi aumenta la resilienza dell'architettura perché per i messaggi può essere definita la persistenza. Ciò significa che vengono archiviati su disco fino a quando il servizio che riceve il messaggio non ne conferma l'elaborazione. Le code di messaggistica possono essere utilizzate in scenari che richiedono elevati livelli di sicurezza, tolleranza d'errore e accuratezza, quali l'elaborazione delle transazioni finanziarie, la prenotazione di viaggi aerei o l'aggiornamento delle cartelle cliniche sanitarie.

Le code dei messaggi possono essere utilizzate anche per consentire le comunicazioni tra applicazioni e sistemi che si trovano in cloud diversi (pubbliciprivati), anche se dislocati in Paesi diversi o addirittura in continenti remoti. L'utilizzo di una coda di messaggi aumenta la tolleranza d'errore ed è possibile servirsene per prevenire la duplicazione o la perdita di dati in sistemi ubicati in aree geografiche lontane e tecnicamente eterogenei. Poiché ogni servizio all'interno del sistema è disgiunto o separato logicamente dagli altri, ciascuno può continuare a funzionare anche se si verifica un guasto o un blocco di altri servizi o applicazioni.

Le code di messaggi funzionano su applicazioni disparate come dispositivi mobili, IoT e record di sistemi di transazione tradizionali. Supportano inoltre varie piattaforme, come VM e container, e possono consentire l'integrazione tra le applicazioni legacy e le soluzioni più recenti.

Confronto tra code di messaggi e...

Confronto tra code di messaggi e modelli pub/sub
Le code di messaggi utilizzano un pattern di messaggistica point-to-point, in cui un'applicazione (chiamata mittente) invia un messaggio alla coda e un'altra applicazione (chiamata destinatario) riceve il messaggio dalla coda e lo utilizza. È necessario che vi sia una relazione uno a uno tra il mittente e il destinatario e ogni messaggio deve essere utilizzato solo una volta.

Se le tue applicazioni richiedono la distribuzione dei messaggi verso più utilizzatori, è possibile combinare più code di messaggi o utilizzare un modello di messaggistica di pubblicazione/sottoscrizione (publish/subscribe, pub/sub).

Nella messaggistica pub/sub, l'applicazione che produce il messaggio è chiamata "publisher" (ossia "editore") e le applicazioni che lo utilizzano sono i "subscriber" (ossia "iscritti"). Ogni messaggio viene pubblicato su un argomento e ogni applicazione che si iscrive a tale argomento ottiene una copia di tutti i messaggi pubblicati ad esso relativi.

La maggior parte delle soluzioni middleware di messaggistica supporta sia la coda dei messaggi (point-to-point) che i modelli di messaggistica pub/sub.

Confronto tra coda di messaggi e bus di messaggi
Un bus di messaggi, un tipo di enterprise service bus o ESB, consente ai servizi di accedere ai dati ovunque, garantendo al tempo stesso che rimangano disgiunti e funzionanti in modo indipendente all'interno di un'architettura di sistemi distribuiti. Quando si utilizza un bus di messaggi, tutti i servizi o le applicazioni devono condividere tipi di dati comuni, un set di comandi comune e protocolli di comunicazione comuni (sebbene possano essere scritti in linguaggi diversi). Gli utilizzatori potranno decidere come utilizzare i messaggi.

Se applicazioni disgiunte devono comunicare tramite un bus di messaggi, i messaggi devono essere trasformati in modo che siano tutti dello stesso tipo. Al contrario, le code di messaggi trasportano i messaggi, indipendentemente dal fatto che siano dello stesso tipo o di tipo diverso.

Confronto tra code di messaggi e servizi web
Le applicazioni possono comunicare direttamente tramite servizi web o API basate su protocolli standard, come SOAP (Simple Object Access Protocol) o HTTP, anziché tramite middleware di messaggistica. I servizi web sono ampiamente utilizzati nei sistemi distribuiti e relativamente semplici da implementare, il che li rende una valida alternativa alle code di messaggi in determinati casi e scenari di utilizzo.

A differenza delle code di messaggi, tuttavia, i servizi web non possono garantire il recapito dei messaggi. Se si verifica un malfunzionamento del server o della connessione, sarà necessario creare una funzionalità per la gestione dell'errore che sia interna al client. I servizi web inoltre non sono dotati di modelli di distribuzione pub/sub. Il middleware di messaggistica assicura una maggiore tolleranza d'errore e una migliore capacità di gestire traffico intenso o picchi di attività.

Per ulteriori informazioni su quando utilizzare le API, quando utilizzare la messaggistica o quando utilizzare entrambi, vedi "Un'introduzione alle API e alla messaggistica".

Confronto tra coda di messaggi e database
In determinate condizioni, è possibile utilizzare i database come alternativa alle code di messaggi, ma il più delle volte servono a scopi diversi e non sono prontamente intercambiabili. I database sono più comunemente utilizzati per lo storage e consentono di accedere più volte alle stesse informazioni. Le code di messaggi non possono essere utilizzate per scopi di storage. Una volta utilizzato, un messaggio viene eliminato dalla coda.

La progettazione di funzionalità simili a code di messaggi in un database è possibile, ma richiede un grande impegno e conoscenza in materia di codifica. I database possono essere utilizzati solo per replicare strutture di code semplici e non sono scalabili per applicazioni più grandi. 

Per ulteriori informazioni sui database e sulle relative funzionalità, consulta "A Brief Overview of the Database Landscape".

Message-queuing-as-a-service

L'accodamento dei messaggi è solitamente gestito da team dedicati all'interno del reparto IT. Ma il recapito "as-a-service", tramite una coda di messaggi ospitata nel cloud, può consentire a singoli o utenti LOB (line-of-business) di richiedere autonomamente, attraverso un portale, modifiche all'infrastruttura di messaggistica, il che può risultare in un incremento dell'agilità.

Message-queuing-as-a-service si integra bene all'interno di architetture serverless o di microservizi comuni nello sviluppo nativo del cloud. Poiché viene offerto in un modello di servizio ospitato nel cloud, tutte le attività di provisioning, installazione e manutenzione della tua infrastruttura di messaggistica vengono gestite dal provider di servizi cloud, ed è in hosting nel cloud.

Tutorial

I seguenti tutorial potranno essere utili se non hai esperienza nello sviluppo di applicazioni che comunicano tramite IBM MQ:

Le seguenti risorse aggiuntive ti forniranno una panoramica più completa:

Soluzioni correlate
IBM Cloud Pak for Integration

IBM Cloud Pak for Integration combina l'automazione AI e un set completo di strumenti di integrazione per connettere applicazioni e dati in qualsiasi ambiente cloud oppure on-premise.

Esplora Cloud Pak for Integration
Soluzioni di cloud ibrido

Scopri come le soluzioni di cloud ibrido basate su IBM Cloud possono aiutare la tua organizzazione a eseguire la migrazione al cloud, modernizzare le applicazioni esistenti e creare nuove applicazioni native del cloud.

Esplora le soluzioni di cloud ibrido
Risorse Cos'è il middleware?

Il middleware accelera lo sviluppo di applicazioni distribuite semplificando la connettività tra applicazioni, componenti applicativi e origini dati back-end.

Cosa sono le API REST?

Le API REST forniscono un modo flessibile e leggero per integrare le applicazioni e sono diventate il metodo più comune per connettere i componenti nelle architetture di microservizi.

Un'introduzione alle API e alla messaggistica

Scopri quando utilizzare le API, quando utilizzare la messaggistica o quando utilizzare entrambi.

Passa alla fase successiva

IBM® Cloud Pak for Integration è una piattaforma di integrazione ibrida che applica la funzionalità dell'automazione dell'AI a circuito chiuso per supportare più stili di integrazione. La piattaforma fornisce una serie completa di strumenti di integrazione all'interno di una singola esperienza unificata per collegare applicazioni e dati attraverso qualsiasi ambiente cloud oppure on-premise. Le funzionalità di Cloud Pak for Integration sbloccano i silos di dati aziendali e gli asset come API, connettono le applicazioni cloud e on-premise e proteggono l'integrità dei dati in transito con la messaggistica aziendale.

Esplora IBM Cloud Pak for Integration