Интеграция Spring - Потребитель с максимальной пропускной способностью

Какая конфигурация элементов Spring Integration, если таковые имеются, будет поддерживать модель:

  • Одна очередь сообщений, представляющая входящую работу
  • Несколько потребителей читают из этой очереди (одно сообщение должно идти только одному потребителю)
  • Каждый потребитель опрашивает только тогда, когда у него нет работы; если он в настоящее время обрабатывает сообщение, не опрашивайте. Если он не работает, опрашивайте каждые X секунд, чтобы узнать, не поступили ли новые работы.

person EngineerBetter_DJ    schedule 05.07.2012    source источник


Ответы (1)


Предполагая, что вы имеете в виду JMS,

<jms:message-driven-channel-adapter/>

См. Такие атрибуты, как concurrent-потребители, max-concurrent-потребители, idle-consumer-limit, idle-task-execution-limit.

Управление потребителями осуществляется базовым ядром Spring DefaultMessageListenerContainer.

person Gary Russell    schedule 05.07.2012
comment
Привет, Гэри, спасибо за ответ. Насколько я понимаю, адаптеры канала для инфраструктуры обмена сообщениями заключались в том, что адаптер канала будет мчаться, извлекая как можно больше сообщений и помещая их во `` внутреннюю '' очередь Spring Integration, вместо того, чтобы извлекать их из очереди инфраструктуры со скоростью нижестоящая служба потребляет их? - person EngineerBetter_DJ; 09.07.2012
comment
Нет; вы управляете скоростью потребления с помощью атрибута concurrent-consumer; нет внутренней очереди, пока вы не используете асинхронную передачу обслуживания (только прямые каналы) в вашей конфигурации SI. - person Gary Russell; 13.07.2012