В сегодняшней архитектуре микросервисов и событий, Apache Kafka является де-факто для потоковых приложений. Однако настройка Kafka для локальной разработки в сочетании с вашим приложением Spring Boot может быть сложной, особенно когда речь идет о конфигурации для локального запуска.
Приложение Spring Boot предоставляет поддержку интеграции с Kafka через пакет spring-kafka в Maven. Для работы с spring-kafka нам нужно подключиться к экземпляру Kafka. Обычно, во время разработки, мы просто запускаем локальный экземпляр Kafka и строим против него. Но с Docker Desktop и контейнерами, все намного проще настроить, чем запускать локальный экземпляр Kafka. Эта статья проведет нас через шаги по настройке локального контейнера Kafka с приложением Spring Boot.
Предварительные требования
- Нам необходимо установить Docker Desktop. Для этого мы можем обратиться к этой статье.
- Приложение Spring Boot с настроенным пакетом spring-kafka.
Запуск контейнера Kafka
Для запуска контейнера Kafka мы сначала используем следующий файл docker-compose:
version'3'
services
zookeeper
image confluentinc/cp-zookeeper latest
environment
ZOOKEEPER_CLIENT_PORT2181
ports
"2181:2181"
kafka
image confluentinc/cp-kafka latest
environment
KAFKA_ZOOKEEPER_CONNECT zookeeper2181
KAFKA_ADVERTISED_LISTENERS PLAINTEXT //localhost9092
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR1
ports
"9092:9092"
depends_on
zookeeper
Этот файл docker-compose содержит конфигурации для загрузки контейнера Kafka и его зависимости, контейнера Zookeeper. Zookeeper управляет узлами брокеров Kafka в кластере; более подробную информацию можно найти в этой статье.
Для регистрации контейнеров с Docker Desktop мы используем следующую команду:
docker-compose up -d
Это загрузит необходимые образы и запустит контейнеры, и как только контейнеры будут запущены, вы сможете увидеть их в Docker Desktop, как показано ниже:
Теперь, когда контейнер Kafka запущен, мы можем создать необходимые темы, используя консоль Docker Desktop, с помощью следующей команды:
kafka-topics --create --topic user-notification --partitions 1 --replication-factor 1 --bootstrap-server localhost:9092
Теперь, когда контейнер запущен и необходимые предварительные условия выполнены, мы можем запустить приложение Spring Boot. Для приложения Spring Boot настройте адрес начальной загрузки Kafka следующим образом:
kafka.bootstrapAddress=localhost:9092
Когда мы запустим приложение Spring Boot, мы должны увидеть логи соединения с Kafka, в зависимости от типа приложения Spring Boot, будь то производитель или потребитель.
Следуя шагам, изложенным в статье, мы настроили локальную среду разработки, используя контейнер Kafka и приложение Spring Boot.
Source:
https://dzone.com/articles/setting-up-local-kafka-container-for-spring-boot-application