O JMS define seis tipos de interfaces de mensagem; um tipo de mensagem básico e cinco subtipos. Os tipos de mensagem são definidos de acordo com o tipo de carga útil da mensagem, em que a carga útil é o corpo de uma mensagem que possui o conteúdo. O JMS especifica somente a interface e não especifica a implementação. Isto permite a implementação e transporte de mensagens específicas do fornecedor enquanto utiliza uma interface comum.
Tipo de Mensagem | Descrição |
Mensagem | A classe-base. Este tipo de mensagem é utilizado para notificação de eventos e não possui uma carga útil. |
BytesMessage | A carga útil é armazenada como uma matriz de bytes. Este tipo de mensagem é útil para trocar dados em um formato nativo de aplicativo e quando o JMS é utilizado como um transporte entre dois sistemas, em que o cliente JMS não conhece o tipo de carga útil da mensagem. |
TextMessage | Os dados são armazenados como uma cadeia. Este tipo de mensagem é útil para a troca de mensagens de texto simples e para dados de caracteres mais complexos, como documentos XML. |
StreamMessage | Uma mensagem de Fluxo é uma seqüência de tipos Java primitivos.
O objeto de mensagem rastreia a ordem e os tipos destes primitivos
no fluxo. As regras de conversão formal se aplicam; por exemplo, será emitida uma
exceção se um aplicativo JMS tentar ler um valor duplo como um valor resumido.
Consulte Especificação Java Message Service,
Versão 1.1 para obter uma lista
completa das regras de conversão. 21ABCDEFGH32.345 é um exemplo de uma carga útil StreamMessage. Consiste nos três campos a seguir:
Se a estrutura de dados for desconhecida, o método genérico readObject() poderá ser utilizado para retornar o próximo objeto no fluxo. Se a estrutura dos dados for conhecida, o cliente JMS poderá ser específico sobre o tipo de objeto sendo acessado. |
MapMessage | A carga útil de um MapMessage é armazenada como um conjunto de
pares nome-valor. O nome é definido como uma cadeia e o valor é especificado. O MapMessage é útil para entregar dados chaveados que podem ser alterados de uma mensagem para a
seguinte. NumberOfCopies:5 é um exemplo de carga útil de MapMessage, em que NumberOfCopies é a chave e 5 é o valor. Os dados podem ser acessados utilizando-se getMapNames(), que retorna um objeto de Enumeração Java. É possível iterar por meio de MessageMap utilizando hasMoreElements() para recuperar os pares nome-valor mapeados. |
ObjectMessage | A mensagem de Objeto transporta um Objeto Java serializável como sua carga útil. É útil para a troca de objetos Java. |