往kafka创建生产者和消费者,并且打数据和消费数据

1. 创建Topic(在任意节点执行)
bash 复制代码
# 进入Kafka的bin目录(替换为实际路径)
cd /opt/kafka/bin
 
# 创建名为my_topic的Topic,副本因子3,分区数3,保留7天
./kafka-topics.sh \
  --create \
  --zookeeper node1:2181,node2:2181,node3:2181 \
  --replication-factor 3 \
  --partitions 3 \
  --topic my_topic \
  --config retention.ms=604800000
2. 验证Topic创建成功
bash 复制代码
# 查看Topic详情
./kafka-topics.sh \
  --describe \
  --zookeeper node1:2181 \
  --topic my_topic
 
# 预期输出:
# Topic: my_topic   PartitionCount:3    ReplicationFactor:3    Configs: retention.ms=604800000
# Partition: 0    Leader: 1    Replicas: 1,2,3    Isr: 1,2,3
# Partition: 1    Leader: 2    Replicas: 2,3,1    Isr: 2,3,1
# Partition: 2    Leader: 3    Replicas: 3,1,2    Isr: 3,1,2
3. 启动生产者持续发送数据
bash 复制代码
# 在后台启动生产者(每秒发送一条带时间戳的数据)
nohup bash -c ' \
  while true; do \
    echo "测试数据 $(date +\"%Y-%m-%d %H:%M:%S\")" | \
    ./kafka-console-producer.sh \
      --broker-list node1:9092,node2:9092,node3:9092 \
      --topic my_topic; \
    sleep 1; \
  done \
' > producer.log 2>&1 &
关键参数说明:
  • ZooKeeper地址node1:2181,node2:2181,node3:2181(替换为实际ZooKeeper集群地址)
  • Broker地址node1:9092,node2:9092,node3:9092(替换为实际Kafka Broker地址)
  • 保留时间retention.ms=604800000(7天,单位毫秒)
  • 副本因子:3(确保数据在3个节点上各存一份)
验证生产者运行:
bash 复制代码
# 实时查看生产者日志
tail -f producer.log
 
# 使用消费者验证数据
./kafka-console-consumer.sh \
  --bootstrap-server node1:9092 \
  --topic my_topic \
  --from-beginning
注意事项:
  1. 确保ZooKeeper和Kafka集群已启动

  2. 替换所有IP地址和路径为实际集群配置

  3. 生产环境建议配置防火墙规则开放2181/9092端口

  4. 可通过jps命令检查Kafka进程状态

消费Kafka数据。以下是正确的Shell脚本实现:
bash 复制代码
#!/bin/bash
 
# Kafka消费者脚本
# 配置参数
BOOTSTRAP_SERVERS="192.168.1.1:9092,192.168.1.2:9092,192.168.1.3:9092"  # 替换为您的Kafka Broker地址
TOPIC="my_topic"  # 与生产者Topic名称一致
GROUP_ID="shell-consumer-group"
 
echo "启动Kafka消费者,消费Topic: $TOPIC"
echo "按Ctrl+C停止消费"
echo "--------------------------------"
 
# 持续消费消息
while true; do
  # 使用kafka-console-consumer.sh消费消息
  kafka-console-consumer.sh \
    --bootstrap-server "$BOOTSTRAP_SERVERS" \
    --topic "$TOPIC" \
    --group "$GROUP_ID" \
    --from-beginning \
    --timeout-ms 1000 \
    --max-messages 10
  
  # 每批消息后暂停1秒
  sleep 1
done

使用说明:

  1. 将上述内容保存为kafka_consumer.sh

  2. 添加执行权限:

    bash 复制代码
    bash
    
    chmod +x kafka_consumer.sh
  3. 运行脚本:

    bash 复制代码
    bash
    
    ./kafka_consumer.sh

关键参数说明:

  • BOOTSTRAP_SERVERS:Kafka集群地址,多个Broker用逗号分隔
  • TOPIC:要消费的Topic名称,需与生产者使用的Topic一致
  • GROUP_ID:消费者组ID,同一组内的消费者共享消费进度
  • --from-beginning:从最早的消息开始消费
  • --timeout-ms:每次拉取消息的超时时间
  • --max-messages:每次拉取的最大消息数量

注意事项:

  1. 确保Kafka安装路径正确,kafka-console-consumer.sh在系统PATH中
  2. 如果使用非标准端口,请修改9092为实际端口
  3. 生产环境建议添加日志持久化功能
  4. 可通过--offset参数指定消费起始位置

这个脚本会持续消费my_topic中的消息,每批消费10条,然后暂停1秒,直到用户手动停止(按Ctrl+C)

相关推荐
yumgpkpm2 小时前
Hadoop在AI时代如何实现生态协同? CMP 7.13(或类 Cloudera CDP7.3 的 CMP 7.13 平台,如华为鲲鹏 ARM 版)
大数据·hadoop·elasticsearch·zookeeper·kafka·hbase·cloudera
梦里不知身是客119 小时前
kafka独立消费者案例(订阅主题)
分布式·kafka·linq
陈果然DeepVersion20 小时前
Java大厂面试真题:从Spring Boot到AI微服务的三轮技术拷问(一)
java·spring boot·redis·微服务·kafka·面试题·oauth2
一瓢一瓢的饮 alanchan1 天前
Flink原理与实战(java版)#第1章 Flink快速入门(第一节IDE词频统计)
java·大数据·flink·kafka·实时计算·离线计算·流批一体化计算
冰芒芒1 天前
Kafka-1 基本概念
分布式·kafka
Hello.Reader2 天前
基于 Flink CDC 的 MySQL → Kafka Streaming ELT 实战
mysql·flink·kafka
教练、我想打篮球3 天前
05 kafka 如何存储较大数据记录
java·kafka·record
时鲟、时倾4 天前
docker部署kafka
docker·容器·kafka
编啊编程啊程5 天前
【029】智能停车计费系统
java·数据库·spring boot·spring·spring cloud·kafka
熙客5 天前
Kafka:专注高吞吐与实时流处理的分布式消息队列
分布式·中间件·kafka