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. Esta abordagem permite a implementação e o transporte específicos do fornecedor de mensagens enquanto usa uma interface comum.
Tipo de Mensagem | Descrição |
---|---|
Mensagem | A classe-base. Este tipo de mensagem é usado 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 que é nativo para o aplicativo e quando JMS é usado como um transporte entre dois sistemas, onde o cliente JMS não conhece o tipo de carga útil da mensagem. Use esse tipo de mensagem para transmitir mensagens XML para assegurar que a mensagem seja transmitida eficientemente e não esteja sujeita a conversões de dados desnecessárias. |
TextMessage | Os dados são armazenados como uma cadeia. Esse tipo de mensagem é útil para troca de mensagens de texto simples. |
StreamMessage | Uma mensagem de Fluxo é uma seqüência de tipos Java™ primitivos. O objeto de mensagem controla a ordem e os tipos destas
primitivas dentro do 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 Java Message
Service Specification, 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 usando 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 . |