写点什么

开发和学习时需要造一些 kafka 消息,于是写了段脚本实现,在这里记录备忘,后面会常用到

作者:程序员欣宸
  • 2022-11-15
    广东
  • 本文字数:1326 字

    阅读完需:约 4 分钟

开发和学习时需要造一些kafka消息,于是写了段脚本实现,在这里记录备忘,后面会常用到

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos


  • 开发和学习时需要造一些 kafka 消息,于是写了段脚本实现,在这里记录备忘,后面会常用到;

环境信息

  1. Kafka:2.0.1

  2. Zookeeper:3.5.5

  3. shell 脚本运行环境:MacBook Pro (系统:10.15.3 (19D76))

脚本内容

  • 下面是脚本 sendmessage.sh 的内容,带有详细注释:


#!/bin/sh
#响应Ctrl+C中断trap 'onCtrlC' INTfunction onCtrlC () { echo 'Ctrl+C is captured' exit 1}
#kafka所在目录kafkaPath=/Users/zhaoqin/temp/202003/07/kafka_2.11-2.0.1#brokerbrokerlist=192.168.50.135:31090,192.168.50.135:31091,192.168.50.135:31092#kafka的topictopic=test001#消息总数totalNum=10000#一次批量发送的消息数batchNum=100#该标志为true,表示文件中的第一条记录firstLineFlag='true'
for ((i=1; i<=${totalNum}; i ++)) do #消息内容,请按照实际需要自行调整 messageContent=batchmessage-${i}-`date "+%Y-%m-%d %H:%M:%S"`
#如果是每个批次的第一条,就要将之前的内容全部覆盖,如果不是第一条就追加到尾部 if [ 'true' == ${firstLineFlag} ] ; then echo ${messageContent} > batchMessage.txt
#将标志设置为false,这样下次写入的时候就不会清理已有内容了 firstLineFlag='false' else echo ${messageContent} >> batchMessage.txt fi
#取余数 modVal=$(( ${i} % ${batchNum} ))
#如果达到一个批次,就发送一次消息 if [ ${modVal} = 0 ] ; then #在控制台显示进度 echo “${i} of ${totalNum} sent”
#批量发送消息,并且将控制台返回的提示符重定向到/dev/null cat batchMessage.txt | ${kafkaPath}/bin/kafka-console-producer.sh --broker-list ${brokerlist} --sync --topic ${topic} | > /dev/null
#将标志设置为true,这样下次写入batchMessage.txt时,会将文件中的内容先清除掉 firstLineFlag='true' fidone
复制代码


  • kafkaPath 是客户端电脑上 kafka 安装的路径,请按实际情况修改;

  • brokerlist 是远程 kafka 信息,请按实际情况修改;

  • topic 是要发送的消息 Topic,必须是已存在的 Topic;

  • totalNum 是要发送的消息总数;

  • batchNum 是一个批次的消息条数,如果是 100,表示每攒齐 100 条消息就调用一次 kafka 的 shell,然后逐条发送;

  • messageContent 是要发送的消息的内容,请按实际需求修改;

运行脚本

  • 给脚本可执行权限: chmod a+x sendmessage.sh

  • 执行: ./sendmessage.sh

  • 每到一百条会有一次进度提醒:


(base) zhaoqindeMBP:07 zhaoqin$ ./sendmessage5.sh“100 of 10000 sent”“200 of 10000 sent”“300 of 10000 sent”“400 of 10000 sent”“500 of 10000 sent”“600 of 10000 sent”“700 of 10000 sent”“800 of 10000 sent”...
复制代码


  • 用 shell 命令消息此消息:


./kafka-console-consumer.sh \--bootstrap-server 192.168.50.135:31090 \--topic test001 \--from-beginning
复制代码


  • 可以看到内容符合预期:

  • 如果安装了监控,也能看到消息发送正常:

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 刚刚阅读数: 4
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018-04-19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
开发和学习时需要造一些kafka消息,于是写了段脚本实现,在这里记录备忘,后面会常用到_kafka_程序员欣宸_InfoQ写作社区