JMS performance

Estou tendo um pouco de dificuldade para entender o JMS de uma perspectiva de desempenho. Temos este código muito simples em nosso aplicativo:

QueueConnection connection = null;
QueueSession session = null;
QueueSender sender = null;
TextMessage msg = null;

try {
  // The JNDIHelper uses InitialContext to look up things
  QueueConnectionFactory qcf = JNDIHelper.lookupFactory();
  Queue destQueue = JNDIHelper.lookupQueue();

  // These objects are created for every message, which is quite slow
  connection = qcf.createQueueConnection();
  session = connection.createQueueSession(false, Session.AUTO_ACKNOWLEDGE);
  sender = session.createSender(destQueue);

  // This is the actual message
  msg = session.createTextMessage(xmlMsg);
  sender.setTimeToLive(0);
  sender.send(msg);
} 
finally {

  // Close all objects again
  JMSUtilities.safeClose(sender);
  JMSUtilities.safeClose(session);
  JMSUtilities.safeClose(connection);
}

O código está correto, mas provavelmente alguns dos artefatos acima podem ser reutilizados para várias mensagens. Estas são as nossas configurações:

Usamos o Oracle Weblogic 10.3.3 @Weblogic se conecta ao IBM MQ 7.0 (o problema também aparece com 6.0) para JMS A lógica acima é executada por um único thread em um servidor back-end. Seria simples manter alguns objetos QueueConnection, QueueSession, QueueSender) na memória, pois não há simultaneidade envolvidMinhas perguntaQue tipos de objetos podem ser compartilhados entre várias mensagens? (é claro que incluiríamos a recuperação de erros, a restauração desses objetos compartilhados) Quais são as práticas recomendadas para melhorar o desempenho?

questionAnswers(3)

yourAnswerToTheQuestion