Я использую управляемую сообщениями среду POJO от Spring (и DefaultMessageListenerContainer
в частности) для прослушивания нескольких очередей и тем.
В случае одной конкретной очереди необходимо замедлить скоростьв котором я истощаю очередь, порядка одного сообщения каждые пять минут.Фактическая обработка сообщений - это операция за секунду, но я бы хотел, чтобы слушатель некоторое время бездействовал между сообщениями.
Я создал небольшой взлом, но это явно не так.Оптимальный: то, что я сделал, это установил максимальный параллелизм равным 1 и добавил Thread.sleep(..)
после обработки каждого сообщения.Вместо этого я хотел бы найти способ использовать DefaultMessageListenerContainer
для ожидания между попытками получения, а не заставлять обработчик ожидать во время возможной обработки сообщения.
Я подумал, если бы был ScheduledExecutor
, который бы помог, но я понимаю, что регулирование нужно будет выполнять там, где выполняются задачи.Может быть, есть какой-то метод из DefaultMessageListenerContainer
, который я мог бы переопределить, чтобы выполнить то, что мне нужно?