Я получаю эту ошибку, когда запускаю приложение Kafka в Spring Boot. Я хочу создать тему, запустив мое приложение. Это мой класс конфигурации:
@Configuration
public class KafkaConfig {
@Bean
NewTopic createTopic() {
return TopicBuilder.name("product-created-events-topic")
.partitions(3)
.replicas(3)
.configs(Map.of("min.insync.replicas", "2"))
.build();
}
}
Мое приложение.свойства:
spring.application.name=Product-Microservice
server.port=0
server.kafka.producer.bootstrap-servers=localhost:9092, localhost:9094
spring-kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring-kafka.producer.value-serializer=org.springframework.kafka.support.serializer.JsonSerializer
Это ошибка, показанная на моем сервере Kafka:
[2024-06-17 09:45:17,355] INFO [Admin Manager on Broker 0]: Error processing create topic request CreatableTopic(name='product-created-events-topic', numPartitions=3, replicationFactor=3, assignments=[], configs=[CreateableTopicConfig(name='min.insync.replicas', value='2')]) (kafka.server.ZkAdminManager)
org.apache.kafka.common.errors.InvalidReplicationFactorException: Replication factor: 3 larger than available brokers: 1.
Когда я изменил реплики (3) на реплики (1), все заработало, и моя тема создана:
@Configuration
public class KafkaConfig {
@Bean
NewTopic createTopic() {
return TopicBuilder.name("product-created-events-topic")
.partitions(3)
.replicas(1) //Changed from 3 -> 1
.configs(Map.of("min.insync.replicas", "2"))
.build();
}
}
после запуска мой процесс был создан, но только с одной репликой
Topic: product-created-events-topic TopicId: ---- PartitionCount: 3 ReplicationFactor: 1 Configs: min.insync.replicas=2
Topic: product-created-events-topic Partition: 0 Leader: 0 Replicas: 0 Isr: 0
Topic: product-created-events-topic Partition: 1 Leader: 0 Replicas: 0 Isr: 0
Topic: product-created-events-topic Partition: 2 Leader: 0 Replicas: 0 Isr: 0
Я использую Windows, поэтому использую традиционную Кафку с Zookeeper.

использую Windows, поэтому я использую традиционную Кафку с Zookeeper
Вам нужно будет запустить на своем компьютере 3 брокера, чтобы создавать любые темы с 3 репликами. Это означает многократное выполнение kafka-server-start или использование Docker Compose/minikube с тремя брокерами.
Windows также должна иметь возможность использовать Kraft. Как уже упоминалось, вам придется запускать kafka-server-start несколько раз с отдельными файлами свойств... Однако использование нескольких брокеров на одном компьютере не рекомендуется. Один жесткий диск — это единственная точка отказа, поэтому нет смысла копировать, на самом деле.
Хорошо, спасибо за помощь. Кстати, мы можем запустить KRaft в Windows в WSL (Linux в Windows)
Можете ли вы рассказать мне, как запустить несколько брокеров? Должен ли я запустить 3 сервера Kafka или изменить что-то в файле server.properties? На самом деле я новичок в Kafka и следую руководству, чтобы изучить его, там он не внес никаких изменений, поэтому я посчитал, что это может быть недостатком использования Zookeeper (поскольку MAC использует KRaft). Было бы здорово, если бы вы мне помогли.