Concetto: JMS (Java Messaging System)
Questa linea guida fornisce una panoramica dettagliata di JMS (Java Messaging System).
Relazioni
Elementi correlati
Descrizione principale

Introduzione

JMS (Java Messaging System), fornisce una piattaforma incrociata standard per le comunicazioni asincrone dei dati business e gli eventi dell'impresa. La comunicazione avviene in genere tra i processi e le macchine. Gli oggetti nelle applicazioni, in genere in esecuzione su macchine diverse, comunicano accedendo ai servizi di MOM (Message-Oriented Middleware) tramite una serie standard di interfacce definite con JMS.

Diagramma descritto nel testo di accompagnamento.

JMS fornisce una serie di interfacce che isolano il programmatore Java (implementando i produttori e consumatori dei messaggi) dai provider di MOM.

Questa pagina di contenuto descrive i concetti chiave e l'uso specifico di JMS.

Messaggi

Un messaggio è un pacchetto contenente dati business. È composto da tre compartimenti:

  • Intestazione: Contiene informazioni di indirizzamento rete e identificatori del messaggio.
  • Proprietà: Contiene metadati relativi al messaggio. JMS richiede alcune proprietà, ma i programmatori dell'applicazione possono aggiungerne altri.
  • Carico utile: Contiene i dati business reali. Il carico utile è interamente controllato dal programmatore dell'applicazione.

Diagramma descritto nel testo di accompagnamento.

In JMS, il messaggio è incapsulato in un oggetto che implementa l'interfaccia javax.jms.Message. Un programma Java può avere accesso ai compartimenti tramite quest'interfaccia, come mostrato nel seguente diagramma. Il carico utile ha diverse varianti, di cui si discuterà successivamente.

Diagramma descritto nel testo di accompagnamento.

L'intestazione contiene le proprietà del messaggio che devono essere sempre presenti. Le seguenti proprietà sono disponibili nell'intestazione:

  • MessageID
  • Timestamp
  • CorrelationID
  • ReplyTo
  • Destination
  • DeliveryMode
  • Redelivered
  • Type
  • Expiration
  • Priority

Le proprietà possono essere utilizzate dal programmatore dell'applicazione per fornire metadati relativi al messaggio. Le proprietà consistono in un insieme arbitrario di nome-valore-coppie.

Esistono sei tipi di carichi utili supportati da JMS:

  • Messaggi Text
  • Messaggi Object
  • Messaggi Byte
  • Messaggi Map
  • Messaggi Stream
  • Messaggio (non presente)

I tipi di carico utile si riflettono nella gerarchia di classe dove le interfacce estendono il javax.jms.Message. Nel diagramma seguente sono illustrati i messaggi Text, Object e Byte utilizzati frequentemente. I messaggi di testo sono comunemente i vettori dei dati XML.

Diagramma descritto nel testo di accompagnamento.

Destinazioni

JMS definisce il concetto di una destinazione. I messaggi vengono inviati e ricevuti dalle destinazioni. Le destinazioni possono assumere due forme:

  • Code
  • Argomenti

Le code sono destinazioni di messaggi utilizzati quando i messaggi vengono gestiti da un solo utente. Se questi messaggi fossero inviati tramite posta ordinaria, dovremmo considerare le code come delle cassette postali di un determinato utente. Le comunicazioni attraverso code sono definite point-to-point.

Gli argomenti sono destinazioni di messaggi utilizzati quando i messaggi devono essere ricevuti da più destinatari, ognuno dei quali esprime interesse nel ricevere un particolare tipo di messaggio. Utilizzando nuovamente l'analogia con la posta cartacea, potremmo pensare alla realizzazione di un articolo di giornale letto da un numero indefinito di destinatari. Si fa spesso riferimento a questo tipo di progettazione come modello publish-and-subscribe.

Recapito del messaggio

I recapiti del messaggio possono avvenire in due modi:

  • Permanente
  • Non permanente

Il recapito permanente include la memorizzazione del messaggio in un file o database, che garantisce il recapito. Il recapito non permanente migliora le prestazioni e riduce gli eccessi di memoria, ma non garantisce il recapito del messaggio. Per molte applicazioni che utilizzano JMS, il recapito permanente è il metodo più comune.

Client JMS

I client JMS sono oggetti Java che utilizzano JMS. Esistono due ruoli definiti:

  • Autori del messaggio: programmi Java che creano e inviano i messaggi.
  • Utenti del messaggio: programmi Java che ricevono i messaggi.

Il diagramma seguente offre una panoramica delle interazioni fra autore, utenti e provider JMS.

Diagramma descritto nel testo di accompagnamento.

L'autore può essere qualunque classe Java che abbia accesso ad una implementazione JMS. Gli autori del messaggio creano e inviano i messaggi.

L'utente può essere qualunque classe Java che abbia accesso ad una implementazione JMS. Gli utenti ricevono e leggono i messaggi.

Un client JMS utilizza un insieme di interfacce per accedere a JMS. Gli oggetti che implementano le interfacce JMS sono creati seguendo una serie di produttori. Il primo fra questi è ConnectionFactory, ricercato tramite JNDI. Il client JMS utilizza il produttore di connessione per creare un oggetto di connessione, utilizzato per creare un oggetto di sessione, a sua volta utile come produttore per gli altri oggetti JMS. La figura seguente illustra le relazioni concettuali principali tra i produttori, partendo dai dettagli di code e argomenti.

Diagramma descritto nel testo di accompagnamento.

I produttori di connessione, le connessioni e le sessioni sono presenti in due forme: una per le code e l'altra per gli argomenti. Il diagramma di classe qui sotto mostra la gerarchia di interfaccia relative ai concetti JMS chiave.

Diagramma descritto nel testo di accompagnamento.

Provider JMS

Un provider JMS è un'implementazione che soddisfa la specifica JMS. È responsabile della ricezione, persistenza e recapito dei messaggi.

Ulteriori informazioni

Per maggiori informazioni su JMS, visitare il sito Web http://java.sun.com/products/jms/.