在當今的微服務和事件驅動架構中,Apache Kafka 是流式應用程序的事實標準。然而,將 Kafka 設置為本地開發環境以配合您的 Spring Boot 應用程序 時可能會有些棘手,特別是在配置它以本地運行的時候。
spring-kafka Maven 套件為 spring-kafka 提供了集成支持。要與 spring-kafka 一起工作,我們需要連接到 Kafka 實例。通常,在開發過程中,我們只是運行一個本地的 Kafka 實例並以其為基礎。但是使用 Docker Desktop 和容器,設置的過程比運行本地 Kafka 實例要簡單得多。本文將指導我們設置本地 Kafka 容器與 Spring Boot 應用程序的步驟。
前提條件
- 我們需要設置 Docker Desktop。為此,我們可以參考這篇 文章。
- 配置了 spring-kafka 套件的 Spring Boot 應用程序。
運行 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 應用程序時,我們應該根據 Spring Boot 應用程序的類型(無論是生產者還是消費者)看到與 Kafka 連接的日誌。
根據文章中概述的步驟,我們使用 Kafka 容器和 Spring Boot 應用程序設置了本地開發環境。
Source:
https://dzone.com/articles/setting-up-local-kafka-container-for-spring-boot-application