2012-04-04 12 views
7

Tengo un intermediario de ActiveMQ que utiliza un transporte SSL. Tengo alrededor de 10 consumidores que están usando el corredor. Estoy usando camel para configurar mis rutas.Consumidor de ActiveMQ se bloquea

De vez en cuando, cuelga y no consumirá nuevos mensajes, incluso si reinicio los consumidores, aunque haya mensajes pendientes en las colas.

Empecé a tratar de aislarme de lo que estaba pasando al visitar a mis consumidores de a uno por vez, tratando de replicar el problema. Finalmente llegué a un consumidor en el que podría volver a crear el problema. Se bloqueará después de un período de tiempo, sin embargo, si voy a la consola de administración de MQ activa y trato de ver los mensajes en la cola, comenzará a ejecutarse nuevamente. Creo que Jetty está causando que una conexión actualice la cola de la página web y, por lo tanto, desbloquee algún problema relacionado con hilos que estoy teniendo. ¿Cómo debo depurar esto?

Gracias

+0

Parece un problema de ActiveMq. Si tiene esa situación y comienza un nuevo cliente, ¿recibe los mensajes? – Julias

+0

No, no necesariamente. Intenté antes apagar el consumo, luego volver a encenderlo y no volverá a la cola para recibir mensajes. – Derek

Respuesta

7

Un colega mío se topó con algo interesante, y acabo de encontrar una explicación en Internet: http://activemq.2283324.n4.nabble.com/Consumer-is-not-able-to-pick-messages-from-queue-td2531722.html

Aparentemente hay un tamaño de página que puede llenarse cuando tienes un selector y todo el los mensajes están en la misma cola Esto estaba sucediendo para nosotros, no había comenzado como consumidor, así que terminé con una página completa de mensajes con selectores para un consumidor diferente, y esto estaba causando que mi consumidor en ejecución no recibiera ningún trabajo adicional.

0

Demasiado tarde para ti, pero tuve el mismo problema y el problema fue que estaba tratando de agregar cosas a la cola usando la misma conexión que estaba usando para quitar cosas de la cola.

Una vez que los separé (dos contextos completamente diferentes, uno para producir y el otro para consumir), el problema se resolvió solo.