Есть ли способ настроить параметры тайм-аута клиента Kafka в потоке данных Spring Cloud?

#spring-cloud-stream #spring-cloud-dataflow

#spring-cloud-stream #spring-cloud-поток данных

Вопрос:

При запуске потока потока данных Spring Cloud довольно часто приложения не могут быть развернуты на моем компьютере из-за различных ошибок, связанных с Kafka. Например: org.springframework.cloud.stream.binder.BinderException: Cannot initialize binder
[...]
Caused by: kafka.common.KafkaException: fetching topic metadata for topics [Set(xxx)] from broker [List()] failed

Но я также видел это: kafka.admin.AdminOperationException: replication factor: 1 larger than available brokers: 0

В обеих ситуациях запущен процесс Kafka (а также ZooKeeper), поэтому я предполагаю, что пройден какой-то порог тайм-аута.

Ни общая, ни специфичная для Kafka конфигурация, похоже, не предлагают никаких параметров тайм-аута.

Могу ли я каким-либо образом повлиять на количество времени, по истечении которого клиент Kafka сдается и предполагает, что брокер ушел?

Ответ №1:

Можете ли вы получить информацию о темах, используя команды инструмента kafka, такие как ./bin/kafka-topics.sh ? Это похоже на проблему конфигурации Kafka, а не на возможный тайм-аут.

Если вы хотите установить какое-либо из общих свойств (например connect.timeout.ms и т.д.,) в kafka producer / consumer вы можете сделать это через spring.cloud.stream.kafka.bindings.<channelName>.<producer/consumer>.configuration.<propertyName>=<propertyValue>

Ответ №2:

кажется, что брокер kafka не работал правильно, можете ли вы попробовать использовать bin/kafka-topics.sh --describe --zookeeper <your zookeeper host>:2181 , чтобы узнать, синхронизирована ли ваша тема или нет.