- — создано из AbstractCoordinator
Код: Выделить всё
kafka-coordinator-heartbeat-thread
- / kafka-listener-* — создано из KafkaMessageListenerContainer, шаблон имени потока основан на поле id @KafkaListener, если оно указано
Код: Выделить всё
org.springframework.kafka.KafkaListenerEndpointContainer*
- — создано из KafkaMessageListenerContainer (вместо этого можно установить собственный пул потоков через новый ConcurrentKafkaListenerContainerFactory().getContainerProperties().setScheduler(threadPoolTaskScheduler);
Код: Выделить всё
ThreadPoolTaskScheduler
- создано на основе KafkaMetricsКод: Выделить всё
micrometer-kafka-metrics
Код: Выделить всё
micrometer-kafka-metrics
Код: Выделить всё
ScheduledExecutorService scheduler = Executors
.newSingleThreadScheduledExecutor(new NamedThreadFactory("micrometer-kafka-metrics"));
В результате количество потребителей совпадает с количеством потоков micrometer-kafka-metrics.. p>
Если у нас есть параллелизм потребительской фабрики как N (
Код: Выделить всё
new ConcurrentKafkaListenerContainerFactory().setConcurrency(N);
В большинстве случаев N * M — это небольшое число, но в некоторых редких случаях оно может достигать нескольких сотен (как в моем случае). Я хочу оставить количество одновременных потребителей как есть, но уменьшить количество потоков метрик, поскольку потоки метрик довольно легкие и планируются с фиксированной частотой (по умолчанию 1 минута).
Поэтому я Я ищу способы уменьшить количество этих потоков. В идеале было бы здорово иметь возможность передавать туда дополнительный собственный пул потоков, который будет доступен всем потребителям и с желаемым количеством потоков. Похоже, на данный момент это невозможно, и микрометр не предоставляет такой возможности (возможно, в этом случае имеет смысл внести свой вклад), или я что-то упускаю? Есть ли другие варианты?
Подробнее здесь: https://stackoverflow.com/questions/783 ... ber-of-thr