2015-02-03 3 views
0

Создает ли DMLC отдельные потоки для каждого одновременного потребителя? Что происходит под капотом? В документации написано:DMLC и параллельные потребители работают

Фактическое выполнение MessageListener происходит в асинхронных рабочих единицах, которые создаются из абстракции TaskExecutor Spring. По умолчанию указанное количество задач-вызовов будет создано при запуске, в соответствии с настройкой «concurrentConsumers».

Я не могу понять это, эти задачи выполняются параллельно? Если да, каковы ограничения по умолчанию для этого, например, количество потоков и т. Д.?

Спасибо!

ответ

0

Да для каждого потребителя используется отдельный поток (полученный от исполнителя задачи). По умолчанию используется SimpleAsyncTaskExecutor, и поток уничтожается, когда потребитель остановлен. Нет ограничений на поток за пределами параметров параллелизма контейнера.

Если вы заказываете другой тип исполнителя задач (например, ThreadPoolTaskExecutor), вы должны убедиться, что у него достаточно доступных потоков для поддержки параметров параллелизма вашего контейнера. Контейнерные потоки, как правило, долговечны.

Смежные вопросы