Отправка сообщений новым подписчикам

Я создаю систему массовой обработки видео с помощью spring -boot. Здесь пользователь предоставит всю информацию, относящуюся к видео, через лист xlsx, а мы обработаем видео в бэкэнде. Я использую Rabbitmq для постановки запроса в очередь. Допустим, пользователь загрузил лист со 100 строками, тогда в очереди Rabbitmq будет 100 сообщений. В бэкэнде мы автоматически масштабируем подписчиков (серверы). Итак, мы начнем с одного подписчика и в зависимости от нагрузки (количества сообщений в очереди) увеличим количество подписчиков до 15. Но наш продюсер очень быстр и распределяет все сообщения нашему первому подписчику (до того, как придут другие подписчики), и все наши новые подписчики не получают сообщений из очереди. Если все подписчики доступны до того, как производитель начал отправлять сообщения, то он распределяет сообщения по всем серверам.

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


person Noob User    schedule 24.09.2019    source источник


Ответы (1)


Вероятно, на вас влияет свойство контейнера прослушивателя prefetchCount - оно по умолчанию равно 250 в последних версиях (начиная с 2.0).

Таким образом, первый потребитель получит до 250 сообщений при запуске.

Похоже, вам следует уменьшить его до небольшого числа, даже полностью до 1, чтобы у каждого потребителя было только одно сообщение.

person Gary Russell    schedule 24.09.2019
comment
Большое спасибо, Гэри. - person Noob User; 25.09.2019