Estoy utilizando el marco POJO impulsado por mensajes de Spring (y DefaultMessageListenerContainer
en particular) para escuchar varias colas y temas.¿Cómo puedo controlar la velocidad a la que Spring recibe de una cola?
En el caso de una cola en particular, hay una necesidad de reducir la velocidad a la que drenar la cola, en el orden de un mensaje cada cinco minutos. El procesamiento real de los mensajes es una operación de segundo orden, pero me gustaría que el oyente permanezca inactivo durante algún tiempo entre los mensajes.
He creado un poco de un truco, pero definitivamente no es óptimo: lo que he hecho es establecer la concurrencia máxima en 1 y agregar un Thread.sleep(..)
después de procesar cada mensaje. Me gustaría encontrar una forma de utilizar el DefaultMessageListenerContainer
para esperar entre intentos de recepción, en lugar de hacer que el controlador espere durante el procesamiento de un mensaje.
Había considerado si había un ScheduledExecutor
que ayudaría, pero me doy cuenta de que la regulación tendría que hacerse donde se producen las tareas. ¿Existe algún método del DefaultMessageListenerContainer
que pueda anular para lograr lo que busco?
A menos que esté equivocado, creo que te estás refiriendo a 'receiveTimout'. Esta propiedad intenta recibir de una cola durante el tiempo especificado antes de destruir el 'MessageConsumer'. – Ray
oh, sí, tienes razón, yo estaba por receiveTimeout ( – ruslan
) Debes editar tu respuesta si es incorrecta. – Gray