在当今的微服务和事件驱动架构中,Apache Kafka 已成为流应用的事实标准。然而,在与您的 Spring Boot 应用程序一起为本地开发设置 Kafka 可能会有些棘手,特别是在配置其在本地运行时。
Spring Boot 应用程序通过 spring-kafka Maven 包提供了对 Kafka 集成的支持。要使用 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 broker 节点;关于此内容,可以在这篇文章中找到更多细节。
为了将容器注册到 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