2009-08-24 7 views
7

Espero que alguien me pueda ayudar: estoy usando JBoss 5.1 y MQ Series 7 en una aplicación basada en EJB/JMS. Tengo varios beans controlados por mensajes en mi aplicación, cada uno escuchando en una cola de mensajes de la serie MQ. Cuando se produce un error durante el procesamiento de un mensaje, debo ser capaz de configurar un 'retraso de reintento', de modo que la serie mq espere algún tiempo antes de intentar volver a enviar el mensaje. He revisado extensamente la documentación de la serie MQ, y aún no he encontrado una manera de lograr esto en la serie MQ. Sé que el proveedor JMS predeterminado de JMS tiene una forma de hacerlo, pero actualmente estoy limitado a usar la serie MQ. Como no he podido establecer un retraso de reintentos, cuando tengo un mensaje que falla, mi aplicación se atasca en un ciclo cerrado entregando el mensaje y retrocediendo continuamente. ¿Alguien puede ayudarme a entender si hay alguna opción de configuración en la serie MQ que me permita esperar X milisegundos antes de volver a enviar un mensaje fallido?Configurar un 'retraso de reintentos' en la serie MQ

Respuesta

3

Creo que estás de suerte. Por lo que yo sé, los únicos parámetros que puede ajustar en este escenario es el número máximo de veces que se reintentará el mensaje (BOTHRESH) y el nombre de la cola de excepción/restitución (BOQUEUE) donde se enviará el mensaje si el número de los intentos de reintento exceden el máximo.

Paal

6

Es probable que esto sea una oportunidad para elaborar una pequeña infraestructura para un tema tan.

Como puede ver el JMSDeliveryCount cuando el mensaje ha ingresado al bean (antes de procesarlo, considere confirmar el alcance) y puede ver que ya ha tenido un par de retrocesos, envíe el mensaje a una puesta en escena cola, pero adjunte el nombre de la cola de destino en las propiedades de jms para que pueda usarlo más tarde.

Un proceso simple se puede ejecutar en un cierto intervalo para borrar la cola estadificación (cada 5 minutos por ejemplo) y enviar el mensaje a una cola enrutamiento.

Otro proceso puede ubicarse en la cola de enrutamiento y observe las propiedades de jms (que agregaron el nombre de la cola de destino) y envíe el mensaje al destino original.

Es el intermediario de un hombre pobre, pero alcanzará el objetivo. Es cierto que no hay mucho incorporado para realmente hacer lo que quieres.

0

Puede especificar un límite de reintento para que la reversión continua se detenga después de un intento determinado.