Tipi di messaggio JMS

JMS definisce sei tipi di interfaccia messaggio; un tipo di messaggio di base e cinque tipi secondari. I tipi di messaggio vengono definiti secondo il tipo di payload del messaggio, dove il payload è il contenuto di un messaggio che presenta il contenuto. JMS specifica solo l'interfaccia e non specifica l'implementazione. Ciò consente un'implementazione specifica per il fornitore e il trasporto di messaggi utilizzando un'interfaccia comune.

Nella tabella riportata di seguito vengono descritti i sei tipi di messaggio.
Tipo messaggio Descrizione
Messaggio Classe base. Questo tipo di messaggio viene utilizzato per la notifica di eventi e non dispone di payload.
BytesMessage Il payload viene memorizzato come array di byte. Questo tipo di messaggio è utile per lo scambio di dati nel formato nativo dell'applicazione e quando JMS viene utilizzato come trasporto tra due sistemi, dove il client JMS non riconosce il tipo di payload del messaggio.
TextMessage I dati vengono memorizzati come stringa. Questo tipo di messaggio è utile per lo scambio di messaggi di testo semplici e per dati carattere più complessi, ad esempio documenti XML.
StreamMessage Un messaggio di flusso è una sequenza di tipi Java primitivi. L'oggetto del messaggio tiene traccia dell'ordine e dei tipi di tali primitivi all'interno del flusso. Vengono applicate le regole di conversione formali; ad esempio, viene generata un'eccezione se viene effettuato il tentativo di lettura di un valore doppio come valore breve mediante un'applicazione JMS. Fare riferimento a Java Message Service Specification, version 1.1 per un elenco completo delle regole di conversione.
21ABCDEFGH32.345 è un esempio di payload StreamMessage. Comprende i tre campi riportati di seguito.
  • Un numero intero: 21
  • Una stringa: ABCDEFGH
  • Un valore a virgola mobile: 32,345

Se la struttura dei dati è sconosciuta, è possibile utilizzare il metodo generico readObject() per restituire l'oggetto successivo nel flusso. Se la struttura dei dati è conosciuta, è possibile che il client JMS sia specifico per il tipo di oggetto su cui è in corso l'accesso.

MapMessage Il payload di un MapMessage viene memorizzato come una serie di coppie nome-valore. Il nome viene definito come una stringa e viene immesso il valore. MapMessage è utile per la consegna dei dati con chiave che sono soggetti a modifiche da un messaggio all'altro.

NumberOfCopies:5 è un esempio di payload di MapMessage, dove NumberOfCopies è la chiave e 5 è il valore.

E' possibile accedere ai dati utilizzando getMapNames(), che restituisce un oggetto di enumerazione Java. E' possibile reiterare mediante MapMessage utilizzando hasMoreElements() per recuperare le coppie nome-valore associate.

ObjectMessage Il messaggio oggetto dispone di un oggetto Java serializzabile come payload. E' utile per lo scambio di oggetti Java.
Riferimenti correlati
Albero dei messaggi JMS
Rappresentazione dei messaggi mediante trasporto JMS
Messaggio JMS come input
Messaggio JMS di output
Oggetti gestiti da JNDI
Informazioni particolari | Marchi | Download | Libreria | Supporto | Commenti
Copyright IBM Corporation 1999, 2006 Ultimo aggiornamento: ago 17, 2006
ac24862_