У меня есть производитель kafka для моего веб-приложения на основе Java, чтобы отправлять сообщения в Kafka. Согласно документации, я мог видеть, что производитель kafka является потокобезопасным. Означает ли это, что я могу иметь один экземпляр производителя Kafka и использовать его в разных потоках (веб-запросах), каждый из которых будет открывать и закрывать производителя в моем случае. Будет ли это создавать какие-либо проблемы? Или лучше инициировать производителей по запросу?
Использование Kafka Producer в разных потоках
Ответы (2)
Да, KafkaProducer является потокобезопасным.
См. Класс KafkaProducer
Клиент Kafka, который публикует записи в кластере Kafka.
Производитель является потокобезопасным и, как правило, должен использоваться всеми потоками для лучшей производительности.
Производитель управляет одним фоновым потоком, который выполняет ввод-вывод, а также TCP-соединением с каждым из брокеров, с которыми ему необходимо взаимодействовать. Неспособность закрыть производителя после использования приведет к утечке этих ресурсов.
KafkaProducer
, то где и как мы можем вызвать для него close
метод?
- person ttt; 26.07.2018
Безусловно, лучший подход (который типичен для большинства коннекторов клиентов с отслеживанием состояния, например клиентов SQL, клиента elasticsearch и т. Д.) - создать экземпляр одного экземпляра при запуске приложения и совместно использовать его во всех потоках. Его следует закрывать только при завершении работы приложения.