организация очередей и пакетных запросов с использованием Java - PullRequest
1 голос
/ 18 мая 2011

Я хочу использовать какой-то механизм, чтобы сделать что-то вроде этого - у меня есть сервер приложений, получающий запрос на обработку заказов. Один запрос может иметь один заказ или два заказа. Чтобы обработать заказ, приложение должно позвонить внешнему поставщику, поставщик может обработать не более 5 заказов одновременно. Я хочу создать компонент, который будет пакетировать максимум до 5 заказов, если он доступен, и выполнить один запрос поставщику, а затем, когда я получу ответ, перераспределить ответ на соответствующий запрос. Компонент будет ждать, скажем, 2 секунды, прежде чем запустить пакетный запрос в тот момент, когда поступит первый запрос.

Я думал об использовании JMS, но в JMS потребитель обрабатывает сообщение (заказ), как только оно приходит, и потребитель обрабатывает по одному сообщению за раз. Я имею в виду использование обычной очереди (ArrayBlockingQueue) и пакетных заказов до запуска с использованием ScheduledTimerTask. У кого-нибудь есть идеи - Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 18 мая 2011

Большую часть того, что вы описываете, можно сделать с помощью Apache Camel . Он может быть настроен для дросселирования, пакетирования и пересылки запроса.

Агрегатор делает то, что "максимальное ожидание X сообщений и затем переадресация запроса"

0 голосов
/ 18 мая 2011

Ничто не мешает вам использовать JMS. Просто установите время ожидания для операции, которая извлекается из вашей очереди, и, когда у вас есть 5 сообщений или время ожидания, вы обрабатываете пакет.

...