¿Cómo verificar que el envío de mensajes a una cola JMS no tuvo éxito?

Tengo un requisito en el que debo registrar un mensaje de error si el mensaje JMS no se ha enviado a la cola.

¿Cómo puedo comprobar si el mensaje no ha sido enviado?

Código:

...
...   
QueueSender send = session.createSender(queue);
TextMessage tm = session.createTextMessage(message);

send.send(tm);
log.debug("Sent text=" + tm.getText());
...
...

Gracias por adelantado

preguntado el 21 de mayo de 12 a las 11:05

3 Respuestas

use DeliveryMode.PERSISTENT para asegurarse de que persistirá y se entregará, y detectará la JMSException que se genera si el envío () falla?

contestado el 21 de mayo de 12 a las 11:05

¿Como esto? intente { ... QueueSender enviar = session.createSender(queue); enviar.setDeliveryMode(DeliveryMode.PERSISTENTE); TextMessage tm = session.createTextMessage(mensaje); enviar.enviar(tm); log.debug("Texto enviado=" + tm.getText()); . . .} catch (JMSException e) { //imprime "mensaje no enviado"} - user1407668

si algo como eso. Ha pasado un tiempo desde que usé JMS, pero por lo que recuerdo, la mayoría de los métodos generan JMSExceptions si algo sale mal. - Mcfinnigan

Capturar la excepción de la llamada de envío es suficiente. No es necesario configurar el modo de entrega como PERSISTENTE ya que esta opción hace que todos los mensajes sean persistentes incluso cuando desea que el mensaje no sea persistente.

try
{
  qsender.Send(msg);
}
catch(JMSException je)
{
}

contestado el 23 de mayo de 12 a las 09:05

El sistema Documentación de Oracle dice:

Para mayor flexibilidad, Message Queue le permite personalizar el modo de reconocimiento del cliente JMS. En el modo de reconocimiento del cliente, el cliente reconoce explícitamente el consumo de mensajes al invocar el acknowledge() método de un objeto de mensaje.

Respondido el 22 de Septiembre de 14 a las 08:09

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