Контекст: я разрабатываю приложение, которое будет принимать сообщения из различных очередей Amazon SQS. (Более 25 очередей). Для этого я подумываю о создании библиотеки для приема сообщений из очередей (назовите ее MessageConsumer)
Я хочу динамически распределять потоки для получения / обработки сообщений из разных очередей на основе на трафике c в очереди, чтобы минимизировать растрату ресурсов. Есть 2 способа, которыми я могу go об этом.
1) Может иметь только один тип потока, который опрашивает очереди, принимает сообщения и обрабатывает эти сообщения, и имеет один общий пул потоков для всех очередей. 2) Может иметь отдельные опросы и рабочие потоки.
Во втором случае у меня будет общий пул рабочих потоков и постоянное число опрошенных в очереди.
Редактировать: Для уточнения второго case: я планирую иметь 1 непрерывно работающий поток в каждой очереди, чтобы подсунуть эту очередь для количества сообщений в ней. Затем введите несколько логик c, чтобы определить количество потоков опроса, требуемых для каждой очереди, на основе количества сообщений в каждой очереди и приоритета очереди.
Я не хочу, чтобы потоки опроса работали все время, потому что это может вызывает пустое получение (sqs.receiveMessages ()), поэтому я буду распределять потоки опроса на основе traffi c. В очередях с высоким трафиком c будет больше потоков опроса и, следовательно, будет добавлено больше заданий в пул рабочих потоков.
Пожалуйста, предложите какие-либо улучшения или fl aws в этом проекте?