Вы можете настроить пул слушателей очереди на один поток, чтобы запросы обрабатывались не более чем одним слушателем, но для меня это не имеет смысла.
Правильный ответ — настроить размер пула потоков, чтобы сбалансировать производительность с требованиями к памяти.
Много тысяч? В секунду, в минуту, в час? Скорость, с которой они прибывают, и время, необходимое для каждой задачи, имеют решающее значение. Сколько времени, памяти, процессора на запрос? Убедитесь, что вы настроили свою очередь для обработки того, что может быть довольно большим отставанием.
ОБНОВЛЕНИЕ. Если в секунду поступает десять сообщений, и одному слушателю требуется 10 секунд для обработки сообщения, то вам потребуется 101 поток слушателей, чтобы не отставать. (10 сообщений в секунду * 10 секунд означает, что 100 сообщений поступят к тому времени, когда первый прослушиватель завершит свою 10-секундную задачу. 101-й прослушиватель обработает 101-е сообщение, а последующие прослушиватели закончат вовремя, чтобы не отставать.) Если вам нужен 1 МБ ОЗУ на слушателя вам потребуется 101 МБ ОЗУ только для обработки всех сообщений на одном сервере. Вам понадобится аналогичная оценка для ЦП.
Возможно, было бы разумно подумать о нескольких очередях на нескольких серверах и балансировке нагрузки между ними, если одного сервера недостаточно.
person
duffymo
schedule
24.03.2010