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.
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.
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. |