使用docker 创建kafka,达到项目中连接linux服务器创建的kafka,进行开发使用。 1.在linux中,在指定位置路径,创建docker-compose.yml文件,然后进行添加内容,我用的docker版本是26.1.1:
yaml
version: '3'
services:
zookeeper:
image: confluentinc/cp-zookeeper:7.6.0
hostname: zookeeper
container_name: zookeeper
ports:
- "2181:2181"
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
kafka:
image: confluentinc/cp-kafka:7.6.0
hostname: kafka
container_name: kafka
depends_on:
- zookeeper
ports:
- "9092:9092"
- "29092:29092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: 'zookeeper:2181'
KAFKA_LISTENERS: INTERNAL://0.0.0.0:29092,EXTERNAL://0.0.0.0:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
KAFKA_ADVERTISED_LISTENERS: INTERNAL://kafka:29092,EXTERNAL://{服务器IP}:9092
KAFKA_INTER_BROKER_LISTENER_NAME: INTERNAL
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS: 0
KAFKA_TRANSACTION_STATE_LOG_MIN_ISR: 1
KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR: 1
2.保存好docker-compose.yml
3.在docker-compose.yml文件目录下执行:docker-compose up -d
4.观察启动成功后,使用命令在linux服务器进行测试,
创建 topic (topic名字=test-topic)
docker exec kafka kafka-topics --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
生产消息(交互式)
docker exec -it kafka kafka-console-producer --topic test-topic --bootstrap-server localhost:9092
-交互模式下输入kafka value,然后回车
消费消息(另开终端)
docker exec -it kafka kafka-console-consumer --topic test-topic --bootstrap-server localhost:9092 --from-beginning
-输入消费信息命令后,在控制台观察输出,在生产者回车value后,消费者控制台会同步出现value
5.springBoot项目中配置kafka,供参考:
yaml
kafka:
topic: kafka_topic_outputMessage
spring:
kafka:
bootstrap-servers: {kafka所在linux机器IP}:9092
producer:
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.apache.kafka.common.serialization.StringSerializer
consumer:
properties:
group:
id: {消费者消费的组ID}
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.apache.kafka.common.serialization.StringDeserializer