Для тех, кто хочет "пощупать" Kafka изнутри
Простая установка Kafka через Docker 🔧 Шаг 1. Установка Kafka 1. Установить Docker Desktop 2. Скачайте репозиторий Zerocode: Использовала https://github.com/authorjapps/zerocode 3. Откройте скачанный репозиторий и найти папку docker\compose 4. В этой папке откройте CMD и выполните команду: bash docker-compose -f kafka-schema-registry.yml up -d ✅ Таким образом запускается Kafka со всеми компонентами: Zookeeper, Kafka Broker, Schema Registry, REST Proxy, KSQL DB. 5.Проверить результат docker ps
Шаг 2. Настройка Kafka UI (веб-интерфейс) Чтобы было удобнее работать, добавим красивый веб-интерфейс. 1. В папке docker\compose отредактировать файл kafka-schema-registry.yml и добавьте в конец секции services: новый сервис:
kafka-ui: image: provectuslabs/kafka-ui:latest container_name: kafka-ui ports: - “8080:8080” environment: KAFKA_CLUSTERS_0_NAME: local-kafka KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092 KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181 KAFKA_CLUSTERS_0_SCHEMAREGISTRY: http://schema-registry:8081 KAFKA_CLUSTERS_0_KSQLDBSERVER: http://ksqldb-server:8088 DYNAMIC_CONFIG_ENABLED: “true” depends_on: - kafka - schema-registry restart: unless-stopped
Мой файл kafka-schema-registry.yml — во вложении к посту!
2. Перезапустить контейнеры: bash: docker-compose -f kafka-schema-registry.yml down docker-compose -f kafka-schema-registry.yml up -d
3. Открыть в браузере: http://localhost:8080 4. В настройках Kafka UI укажите: Cluster name: local-kafka Bootstrap Servers: kafka:29092 Schema Registry: http://schema-registry:8081 KSQL DB: http://ksqldb-server:8088 Готово! 🎉 Теперь у вас полноценная Kafka локально с удобным веб-интерфейсом.
Что поделать в Kafka: Создать топик с партициями bash docker exec compose-kafka-1 kafka-topics --create --topic orders --partitions 3 --replication-factor 1 --bootstrap-server kafka:29092 Отправка сообщения: bash: docker exec -it compose-kafka-1 kafka-console-producer --topic orders --bootstrap-server localhost:9092 После запуска команды появится мигающий курсор — вот там можно вводить сообщения. Каждое нажатие Enter отправляет одно сообщение. > {“id”: 1, “product”: “iPhone”, “price”: 1000} Получить сообщения (Consumer) bash: docker exec -it compose-kafka-1 kafka-console-consumer --topic orders --from-beginning --bootstrap-server kafka:29092 Отправка сообщения в топик с ключом: bash: docker exec -it compose-kafka-1 kafka-console-producer --topic orders --property “parse.key=true” --property “key.separator=:” --bootstrap-server localhost:9092 Вводите в формате ключ:значение: user1:{“id”:1,“product”:“iphone”} user2:{“id”:4,“product”:“iphone”} Consumers с ключами и партициями exec -it compose-kafka-1 kafka-console-consumer --topic my-topic --from-beginning --property print.key=true --property print.partition=true --bootstrap-server kafka:29092 https://docs.google.com/document/d/1cJk36UmHoHWt4PM5oL1hI8XfdMpOroLn25uxP72KxuQ/edit?usp=sharing