Estoy usando ActiveMQ en un programa .Net y estoy inundado de eventos de mensajes.¿Cómo puedo reducir la cantidad de mensajes provenientes de ActiveMQ en mi aplicación C#?
En resumen, cuando recibo un evento de cola 'onMessage (IMessage receivedMsg)' pongo el mensaje en una cola interna de la cual los hilos X hacen lo suyo.
Al principio tenía: 'AcknowledgementMode.AutoAcknowledge' al crear la sesión, así que supongo que todos los mensajes en la cola fueron absorbidos y puestos en la cola de la memoria (que es arriesgado ya que con un bloqueo, todo es perdió).
Entonces utilicé: 'AcknowledgementMode.ClientAcknowledge' al crear la sesión, y cuando un trabajador estaba listo con el mensaje, llama al método 'commit()' en el mensaje. Sin embargo, todavía todos los mensajes son absorbidos por la cola.
¿Cómo puedo configurarlo para que SÓLO se procesen o estén en una cola interna una cantidad X de mensajes, y que no todo se "descargue" de inmediato?
Aunque nunca he tocado ActiveMQ, ¿no puedes darle la vuelta a esto: configurar N conversaciones con oyentes ActiveMQ y procesar los mensajes dentro del evento de escucha? –
@will hughes: todo mi programa está escrito de forma asíncrona. Así que incluso el acceso a la base de datos se realiza de forma asíncrona con devoluciones de llamadas. Entonces no puedo quedarme en el evento. – Toad