Transmitir carga útil da mensagem por referência: Código de exemplo para aplicativos de produtor e consumidor
Codifique seus aplicativos JMS para que você possa transmitir com segurança as cargas úteis de mensagens por referência para o sistema de mensagens assíncrono entre aplicativos do produtor e do consumidor dentro de um único servidor.
Quando grandes mensagens de objetos ou mensagens de bytes são enviadas, o custo no uso da memória e do processador de serialização, desserialização e cópia da carga útil da mensagem pode ser expressivo. Se os aplicativos do consumidor estiverem na mesma JVM e você ativar as propriedades transmitir carga útil da mensagem por referência nos connection factories associados e nas especificações de ativação, as cargas úteis da mensagem poderão ser transmitidas do aplicativo do produtor para o aplicativo do consumidor. Isso poderá reduzir ou ignorar a cópia de dados e aprimorar o desempenho e o uso de memória.
Na seguinte figura, as mensagens são transmitidas a partir de um aplicativo produtor JMS por meio de um connection factory do produtor para uma fila em um mecanismo do sistema de mensagens. Eles são obtidos a partir da fila e transmitidos por meio de um connection factory do consumidor ou da especificação de ativação para um aplicativo consumidor JMS.

DataObject data = new DataObject();
data.setXXX("xxx");
data.setYYY(yyy);
ObjectMessage message = session.createObjectMessage();
message.setObject(data);
data = null;
producer.send(message);
Para mensagens de bytes, o aplicativo do produtor deve garantir também gravar apenas uma única matriz de byte completa na mensagem.
Para ajudá-lo a conseguir isso, aqui está algum código de exemplo que é possível adaptar para utilizar em seu aplicativo:byte [] data = myByteData;
BytesMessage message = session.createBytesMessage();
message.writeBytes(data);
data = null;
producer.send(message);
public void onMessage (Message message)
{
ObjectMessage oMessage = (ObjectMessage) message;
DataObject data = oMessage.getObject();
System.out.print(data.getXXX());
System.out.print(data.getYYY());
}