发送kafka消息的shell脚本

简介: 开发和学习时需要造一些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' INT
function onCtrlC () {
    echo 'Ctrl+C is captured'
    exit 1
}

#kafka所在目录
kafkaPath=/Users/zhaoqin/temp/202003/07/kafka_2.11-2.0.1
#broker
brokerlist=192.168.50.135:31090,192.168.50.135:31091,192.168.50.135:31092
#kafka的topic
topic=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'
    fi
done
  • 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
  • 可以看到内容符合预期:

在这里插入图片描述

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

在这里插入图片描述

欢迎关注阿里云开发者社区博客:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...
相关文章
|
1月前
|
Shell
一个用于添加/删除定时任务的shell脚本
一个用于添加/删除定时任务的shell脚本
75 1
|
20天前
|
Shell Linux 测试技术
6种方法打造出色的Shell脚本
6种方法打造出色的Shell脚本
44 2
6种方法打造出色的Shell脚本
|
6天前
|
XML JSON 监控
Shell脚本要点和难点以及具体应用和优缺点介绍
Shell脚本在系统管理和自动化任务中扮演着重要角色。尽管存在调试困难、可读性差等问题,但其简洁高效、易于学习和强大的功能使其在许多场景中不可或缺。通过掌握Shell脚本的基本语法、常用命令和函数,并了解其优缺点,开发者可以编写出高效的脚本来完成各种任务,提高工作效率。希望本文能为您在Shell脚本编写和应用中提供有价值的参考和指导。
17 1
|
11天前
|
Ubuntu Shell 开发工具
ubuntu/debian shell 脚本自动配置 gitea git 仓库
这是一个自动配置 Gitea Git 仓库的 Shell 脚本,支持 Ubuntu 20+ 和 Debian 12+ 系统。脚本会创建必要的目录、下载并安装 Gitea,创建 Gitea 用户和服务,确保 Gitea 在系统启动时自动运行。用户可以选择从官方或小绿叶技术博客下载安装包。
30 2
|
25天前
|
监控 网络协议 Shell
ip和ip网段攻击拦截系统-绿叶结界防火墙系统shell脚本
这是一个名为“小绿叶技术博客扫段攻击拦截系统”的Bash脚本,用于监控和拦截TCP攻击。通过抓取网络数据包监控可疑IP,并利用iptables和firewalld防火墙规则对这些IP进行拦截。同时,该系统能够查询数据库中的白名单,确保合法IP不受影响。此外,它还具备日志记录功能,以便于后续分析和审计。
43 6
|
21天前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
1月前
|
消息中间件 大数据 Java
大数据-55 Kafka sh脚本使用 与 JavaAPI使用 topics.sh producer.sh consumer.sh kafka-clients
大数据-55 Kafka sh脚本使用 与 JavaAPI使用 topics.sh producer.sh consumer.sh kafka-clients
25 2
|
1月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
66 12
|
1月前
|
存储 运维 监控
自动化运维:使用Shell脚本简化日常任务
【9月更文挑战第35天】在IT运维的日常工作中,重复性的任务往往消耗大量的时间。本文将介绍如何通过编写简单的Shell脚本来自动化这些日常任务,从而提升效率。我们将一起探索Shell脚本的基础语法,并通过实际案例展示如何应用这些知识来创建有用的自动化工具。无论你是新手还是有一定经验的运维人员,这篇文章都会为你提供新的视角和技巧,让你的工作更加轻松。
53 2
|
2月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别