¿Puedo enviar mensajes por lotes a través de una cola de Websphere MQ utilizando Java JMS?

Estoy trabajando en un proyecto que requiere enviar varios mensajes a otra aplicación a través de mensajes asincrónicos de Websphere MQ. De hecho, estoy abriendo y cerrando sesiones para cada mensaje que envío. Agradezco tus respuestas. Por cierto, esta es mi primera publicación aquí.

preguntado el 16 de mayo de 11 a las 19:05

La apertura / cierre de sesiones para cada mensaje crea una sobrecarga innecesaria; puede enviar un grupo de mensajes por lotes según los comentarios a continuación. -

2 Respuestas

Supongo que algo como esto debería funcionar:

Session session = connection.createSession(false, SESSION.AUTO_ACKNOWLEDGE);
// Create first message
Message msgOne = session.createTextMessage("Message One");
// Set reply-to queue to REPLY1QUEUE
msgOne.setJMSReplyTo(session.createQueue("REPLY1QUEUE"));
// Create another message.
Message msgTwo = session.createTextMessage("Message Two");
msgTwo.setJMSReplyTo(session.createQueue("REPLY2QUEUE"));

// Initialize destination queue and message producer.
MessageProducer producer = session.createProducer(session.createQueue("DESTQUEUE"));

// Connect, send and close.
connection.start();
producer.send(msgOne);
producer.send(msgTwo);
connection.close();

// Close the session.
session.close();

Si no me equivoco, la cola de respuesta es opcional.

contestado el 17 de mayo de 11 a las 01:05

En el encabezado de su pregunta, mencionó la palabra por lotes lo que me hizo pensar que es posible que desee enviar todos los mensajes agrupados en una sola transacción para que se entreguen todos los mensajes del grupo o ninguno. (Un envío atómico). Si esta es una pieza importante, modificaría ligeramente el código de Friek (limpio y conciso) de la siguiente manera:

Session session = connection.createSession(true, SESSION_TRANSACTED);
....
producer.send(msgOne);
producer.send(msgTwo);
session.commit();
....

contestado el 17 de mayo de 11 a las 17:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.