Pregunta

Estoy viendo un problema donde una cola no está respaldada sin embargo, el tiempo para el consumidor a ejecutar realmente el mensaje JMS es como 100 - 200 segundos desde la creación (medido a través de la JMSTimestamp-CurrentTime).

El flujo era bastante baja a la cola, a menos de 30 mensajes por minuto. Yo era capaz de resolver el problema reiniciando ActiveMQ, después de lo cual los mensajes se están iniciando en menos de 1 ms desde el momento en que fueron creados.

Estoy usando ActiveMQ 5.4.1 y la normal tiempo total de ejecución para el trabajo que se realiza en el MDB está a menos de 2 ms. En el momento de la demora, no había ningún mensaje de error en el registro de ActiveMQ, la CPU era bajo y tenía un montón de memoria.

Parece que el consumidor está tirando el mensaje de la cola, pero sentarse en ellos por alguna razón.

¿Hay algún problema de configuración que podría ser la causa de este problema?

Editar:

La primera línea de mi MDB es el siguiente:

 /* Check the time since this message was created versus processed */
        try {
            long secondsToProcess = TimeUnit.MILLISECONDS.toSeconds(System.currentTimeMillis() - aMessage.getJMSTimestamp());
            if (secondsToProcess > 5) {
                log.error("JMS Consumer Start Delay: " + secondsToProcess + " s" + " JMS Message took more then 5 seconds to be processed");
            } else {
                log.debug("JMS Consumer Start Delay: " + secondsToProcess + " s");
            }
        } catch (Exception e) {
            log.error(e);
        }
¿Fue útil?

Solución 2

Como resultado, ActiveMQ se estaba comportando muy bien, mis trabajadores estaban tomando demasiado tiempo, por lo tanto copias de seguridad de la cola. El código en mi pregunta me permitió ver eso.

Otros consejos

¿Qué tan seguro estás de que el consumidor está tirando el mensaje de la cola de inmediato? ActiveMQ proporciona las propiedades JMSActiveMQBrokerInTime y JMSActiveMQBrokerOutTime puede utilizar para confirmar esto (ver ActiveMQ propiedades del mensaje ).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top