docker安装kafka并测试

# 1. 下载docker镜像
docker pull wurstmeister/zookeeper
docker pull wurstmeister/kafka


# 2. 启动zookeeper (单机方式)
docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeper


# 3. 启动kafka (单机方式)
注:下面启动命令中的IP(192.168.213.213)需要更换为你的服务器/虚拟机的静态IP
docker run -d --name kafka \
-p 9092:9092 \
-e KAFKA_BROKER_ID=0 \
-e KAFKA_ZOOKEEPER_CONNECT=192.168.213.213:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.213.213:9092 \
-e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 wurstmeister/kafka

# 4. 测试搭建的kafka是否可以正常进行发布/消费消息
如果使用的是xshell麻烦开两个窗口,一个provider发布消息,一个consumer消费消息

第一个窗口:
4.1. 查看当前正在运行的容器(zookeeper和kafka)
docker ps
4.2. 进入kafka容器
docker exec -it 容器id /bin/bash
4.3. 进入kafka脚本启动目录
cd /opt/kafka_2.13-2.7.0/bin
4.4. 启动发布消息脚本,并创建test的topic
./kafka-console-producer.sh --broker-list localhost:9092 --topic test
4.5. 上条命令执行后,现在你可以发送消息了,等一会consumer脚本启动后就可以看到消费到的消息了

第二个窗口:
4.1. 查看当前正在运行的容器(zookeeper和kafka)
docker ps
4.2. 进入kafka容器
docker exec -it 容器id /bin/bash
4.3. 进入kafka脚本启动目录
cd /opt/kafka_2.13-2.7.0/bin
4.4. 启动发布消息脚本,并创建test的topic
kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning
4.5. 上条命令执行后,现在你可以看到刚才发送的消息了

<think>好的,用户想在Docker安装Kafka与Spring Boot集成。我需要先整理安装步骤,然后看看怎么和Spring Boot结合。首先,Docker安装Kafka通常需要Zookeeper,不过新版本的Kafka可能已经内置了,但为了兼容性,可能还是用老方法更稳妥。记得用户需要docker-compose.yml文件,所以得写个示例。然后,安装步骤要分点说明,比如创建目录、编写配置文件、启动容器这些。 接下来是Spring Boot集成部分。用户可能需要添加Kafka的依赖,比如Spring Kafka。然后配置application.properties,设置bootstrap-servers地址,应该是Docker容器的地址,比如localhost:9092。然后需要创建生产者和消费者的示例代码,这部分用Java代码展示比较直观。可能还需要说明如何测试,比如用curl发送请求或者用Postman,然后查看日志确认消息是否被消费。 然后要考虑用户可能遇到的问题,比如Docker网络问题导致Spring Boot连不上Kafka,或者端口没映射正确。可能需要提醒检查防火墙或者Docker的端口映射。另外,版本兼容性也很重要,比如Spring Boot和Kafka客户端的版本是否匹配,如果用户用的Spring Boot版本较新,可能需要指定Kafka客户端的版本。 还有,用户可能需要相关的参考资料,比如官方文档或者教程链接。虽然提供的引用内容里有DNS相关的,可能不太相关,但可以忽略。最后,生成相关问题,比如如何配置多Broker集群,如何监控Kafka,或者如何处理消息序列化的问题。这些扩展问题可以帮助用户深入了解更多内容。 现在需要确保所有步骤正确,比如docker-compose.yml里的服务名称、端口映射是否正确。Kafka的环境变量设置是否正确,比如KAFKA_ADVERTISED_LISTENERS要指向Docker主机的地址,这里可能需要根据用户的系统调整,如果是Linux和Mac可能用localhost,Windows可能不同。另外,Kafka的topic创建命令是否正确,是否需要指定分区和副本数。 在Spring Boot部分,配置是否正确,生产者消费者代码是否完整,比如使用@RestController发送消息,消费者用@KafkaListener监听。测试步骤是否清晰,用户能否按照步骤操作成功。最后的问题是否相关,是否覆盖了用户可能感兴趣的后续主题。</think>### 在Docker安装Kafka与Spring Boot集成的步骤 #### 一、Docker环境安装Kafka 1. **创建docker-compose.yml文件** 使用以下配置启动ZooKeeperKafka服务(Kafka 3.0+版本已支持内置ZooKeeper,但为兼容性建议显式配置): ```yaml version: '3' services: zookeeper: image: bitnami/zookeeper:3.8 ports: - "2181:2181" environment: ALLOW_ANONYMOUS_LOGIN: "yes" kafka: image: bitnami/kafka:3.6 ports: - "9092:9092" environment: KAFKA_CFG_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_CFG_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092 ALLOW_PLAINTEXT_LISTENER: "yes" depends_on: - zookeeper ``` 2. **启动服务** 执行命令: ```bash docker-compose up -d ``` 3. **验证安装** 进入Kafka容器创建测试Topic: ```bash docker exec -it kafka_kafka_1 /bin/bash kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1 ``` --- #### 二、Spring Boot集成Kafka 1. **添加Maven依赖** 在`pom.xml`中添加: ```xml <dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> </dependency> ``` 2. **配置application.properties** ```properties spring.kafka.bootstrap-servers=localhost:9092 spring.kafka.consumer.group-id=my-group spring.kafka.consumer.auto-offset-reset=earliest ``` 3. **创建生产者与消费者** **生产者示例**: ```java @RestController public class KafkaProducerController { @Autowired private KafkaTemplate<String, String> kafkaTemplate; @PostMapping("/send") public void sendMessage(@RequestParam String message) { kafkaTemplate.send("test-topic", message); } } ``` **消费者示例**: ```java @Component public class KafkaConsumer { @KafkaListener(topics = "test-topic", groupId = "my-group") public void listen(String message) { System.out.println("Received: " + message); } } ``` 4. **测试流程** - 发送消息:`curl -X POST http://localhost:8080/send?message=HelloKafka` - 查看消费者日志确认消息接收 --- #### 三、常见问题排查 1. **连接失败** 检查Docker端口映射是否开放(如9092是否被占用),使用`docker logs kafka_kafka_1`查看服务日志。 2. **消息未消费** 验证消费者组ID配置一致性,或使用命令手动查看Topic消息: ```bash kafka-console-consumer.sh --topic test-topic --from-beginning --bootstrap-server localhost:9092 ``` 3. **性能优化** 调整`application.properties`中的批量提交参数: ```properties spring.kafka.producer.batch-size=16384 spring.kafka.producer.linger-ms=50 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值