You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CLI命令/脚本让Kafka生产者与消费者持续运行24小时

实现Kafka生产者/消费者持续运行24小时的方案

要验证Kafka集群弹性,你可以通过Shell循环结合Kafka官方CLI工具,实现生产者持续发消息、消费者持续消费24小时,同时保证消息尺寸最小化。以下是具体实现方式:

一、持续运行24小时的生产者

方式1:单命令快速实现

用timeout限制运行时长,配合无限循环发送极简消息(比如10位时间戳或单个字符):

# 替换<集群地址>和<测试主题>为实际值,sleep间隔可按需调整
timeout 24h bash -c 'while true; do echo $(date +%s) | kafka-console-producer.sh --broker-list <kafka-broker1:9092,kafka-broker2:9092> --topic elastic-test-topic; sleep 0.1; done'
  • timeout 24h:强制进程24小时后自动终止
  • date +%s:输出极简的时间戳(仅10个字符),保证消息尺寸最小
  • sleep 0.1:控制发送频率,数值越小发送越频繁(根据测试压力需求调整)

方式2:Shell脚本封装(更灵活)

如果需要自定义参数或逻辑,写个可复用的脚本kafka-producer-24h.sh:

#!/bin/bash
# 配置参数
BROKERS="kafka1:9092,kafka2:9092,kafka3:9092"
TEST_TOPIC="elastic-test-topic"
RUN_SECONDS=$((24 * 3600)) # 24小时转为秒数
SEND_INTERVAL=0.05 # 发送间隔(秒)

start_time=$(date +%s)
current_time=$start_time

while [ $((current_time - start_time)) -lt $RUN_SECONDS ]; do
  # 发送单个字符,是最小的消息尺寸
  echo "x" | kafka-console-producer.sh --broker-list $BROKERS --topic $TEST_TOPIC
  sleep $SEND_INTERVAL
  current_time=$(date +%s)
done

赋予执行权限并运行:

chmod +x kafka-producer-24h.sh
./kafka-producer-24h.sh

二、持续运行24小时的消费者

方式1:单命令快速实现

直接启动消费者并丢弃消息(无需关注内容),用timeout控制运行时长:

# 替换<集群地址>和<测试主题>,--from-beginning可选(从头消费)
timeout 24h kafka-console-consumer.sh --bootstrap-server <kafka-broker1:9092,kafka-broker2:9092> --topic elastic-test-topic --from-beginning > /dev/null
  • > /dev/null:将消费的消息直接丢弃,避免占用磁盘空间
  • 如果不需要从头消费,去掉--from-beginning即可

方式2:Shell脚本封装

写个kafka-consumer-24h.sh脚本,通过进程管理控制运行时长:

#!/bin/bash
BROKERS="kafka1:9092,kafka2:9092,kafka3:9092"
TEST_TOPIC="elastic-test-topic"
RUN_SECONDS=$((24 * 3600))

# 启动消费者,输出重定向到/dev/null
kafka-console-consumer.sh --bootstrap-server $BROKERS --topic $TEST_TOPIC --from-beginning > /dev/null &
consumer_pid=$!

# 等待24小时后终止消费者
sleep $RUN_SECONDS
kill $consumer_pid

运行脚本:

chmod +x kafka-consumer-24h.sh
./kafka-consumer-24h.sh

额外注意事项

  • 如果Kafka的bin目录没加入环境变量,要使用完整路径(比如/opt/kafka/bin/kafka-console-producer.sh)
  • 要后台运行不依赖终端,可加nohup和&:
    nohup timeout 24h bash -c 'while true; do echo "x" | kafka-console-producer.sh --broker-list ... --topic ...; sleep 0.1; done' > producer.log 2>&1 &
    
  • 消费者可添加--consumer-property enable.auto.commit=false关闭自动提交,减少资源开销

内容的提问来源于stack exchange,提问作者maverick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 12:30:41