Представьте себе очередь RabbitMQ, которая по существу собирает «задачи». Затем эти задачи извлекаются приложением Node.js со значением prefetch
, равным 100. Таким образом, приложение предварительно выбирает до 100 задач и затем обрабатывает их, когда это возможно.
Проблема с этой настройкой что задачи могут иметь различный объем памяти, и поэтому трудно предсказать, какое значение prefetch
я могу установить до того, как приложению Node.js не хватит памяти. Для некоторых небольших задач я мог бы предварительно выбрать 100 из них, и приложение работало бы нормально, а затем некоторые полезные нагрузки задачи могли заставить приложение использовать больше памяти, чем обычно, и только предварительная выборка из 50 была бы в порядке, прежде чем приложение заканчивалось памяти.
Я мог бы разбить эти задачи на разные очереди или попытаться нормализовать их, чтобы они имели более стандартный объем памяти. Какие еще подходы вы можете предложить?