一键使用Kafka脚本,一键查看创建修改生产者消费者

Kafka使用时命令过于繁冗,此脚本用于Kafka的便捷使用

bigdata为主机名

使用时仅需修改bigdata为你的主机名,确保本机Kafka可以正常使用即可

#!/bin/bash

while true; do
    # 命令大全系统界面
    echo "Kafka 命令大全系统:"
    echo "1. 主题操作(topics)"
    echo "2. 生产者操作(producer)"
    echo "3. 消费者操作(consumer)"
    echo "4. 配置操作(configs)"
    echo "5. 消费者组操作(consumer groups)"
    echo "6. 生产者性能测试(producer perf test)"
    echo "7. 消费者性能测试(consumer perf test)"
    echo "0. 退出"

    read -p "请输入功能选项数字:" choice

    case $choice in
    1)
        # 主题操作菜单
        while true; do
            echo "主题操作功能:"
            echo "1. 查看所有主题"
            echo "2. 创建主题"
            echo "3. 查看某主题详细信息"
            echo "4. 修改某主题分区数"
            echo "5. 删除主题"
            echo "0.返回命令大全系统界面"
            read -p "请输入主题操作选项数字:" topic_choice

            case $topic_choice in
            1)
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                ;;
            2)
                # 创建主题
                read -p "请输入要创建的主题名称:" topic_name
                while true; do
                    read -p "请输入分区数(整数):" partitions
                    if [[ $partitions =~ ^[0-9]+$ ]]; then
                        break
                    else
                        echo "分区数必须是整数,请重新输入。"
                    fi
                done
                while true; do
                    read -p "请输入副本数(整数,且不超过可用 broker 数量):" replication_factor
                    if [[ $replication_factor =~ ^[0-9]+$ ]]; then
                        # 这里可添加检查副本数不超过可用 broker 数量的逻辑,暂时省略
                        break
                    else
                        echo "副本数必须是整数,请重新输入。"
                    fi
                done
                kafka-topics.sh --bootstrap-server bigdata:9092 --create --partitions $partitions --replication-factor $replication_factor --topic $topic_name
                ;;
            3)
                # 查看某主题详细信息
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                echo "当前可用主题列表如下:"
                read -p "请输入要查看详细信息的主题名称:" topic_to_describe
                kafka-topics.sh --bootstrap-server bigdata:9092 --describe --topic $topic_to_describe
                ;;
            4)
                # 修改某主题分区数
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                echo "当前可用主题列表如下:"
                read -p "请输入要修改分区数的主题名称:" topic_to_alter
                while true; do
                    read -p "请输入新的分区数(整数且大于当前分区数):" new_partitions
                    if [[ $new_partitions =~ ^[0-9]+$ ]]; then
                        # 这里可添加检查新分区数是否大于当前分区数的逻辑,暂时省略
                        break
                    else
                        echo "新分区数必须是整数,请重新输入。"
                    fi
                done
                kafka-topics.sh --bootstrap-server bigdata:9092 --alter --topic $topic_to_alter --partitions $new_partitions
                ;;
            5)
                # 删除主题
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                echo "当前可用主题列表如下:"
                read -p "请输入要删除的主题名称:" topic_to_delete
                kafka-topics.sh --bootstrap-server bigdata:9092 --delete --topic $topic_to_delete
                ;;
            0)
                break
                ;;
            *)
                echo "无效的主题操作选择。"
                ;;
            esac
        done
        ;;
    2)
        # 生产者操作菜单
        while true; do
            echo "生产者操作功能:"
            echo "1. 发送消息到指定主题"
            echo "0.返回命令大全系统界面"
            read -p "请输入生产者操作选项数字:" producer_choice

            case $producer_choice in
            1)
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                echo "当前可用主题列表如下:"
                read -p "请输入要发送消息的主题名称:" topic_name
                echo "开始发送消息到主题 $topic_name。输入'EXIT'退出发送。"
                while true; do
                    read -p "请输入消息内容:" message
                    if [ "$message" = "EXIT" ]; then
                        break
                    fi
                    kafka-console-producer.sh --bootstrap-server bigdata:9092 --topic $topic_name <<< "$message"
                done
                ;;
            0)
                break
                ;;
            *)
                echo "无效的生产者操作选择。"
                ;;
            esac
        done
        ;;
    3)
        # 消费者操作菜单
        while true; do
            echo "消费者操作功能:"
            echo "1. 消费指定主题的消息"
            echo "2. 从主题开头消费所有消息"
            echo "0.返回命令大全系统界面"
            read -p "请输入消费者操作选项数字:" consumer_choice

            case $consumer_choice in
            1)
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                echo "当前可用主题列表如下:"
                read -p "请输入要消费消息的主题名称:" topic_name
                kafka-console-consumer.sh --bootstrap-server bigdata:9092 --topic $topic_name
                ;;
            2)
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                echo "当前可用主题列表如下:"
                read -p "请输入要从开头消费消息的主题名称:" topic_name
                kafka-console-consumer.sh --bootstrap-server bigdata:9092 --from-beginning --topic $topic_name
                ;;
            0)
                break
                ;;
            *)
                echo "无效的消费者操作选择。"
                ;;
            esac
        done
        ;;
    4)
        # 配置操作菜单
        while true; do
            echo "配置操作功能:"
            echo "1. 查看主题配置"
            echo "2. 修改主题配置"
            echo "0.返回命令大全系统界面"
            read -p "请输入配置操作选项数字:" config_choice

            case $config_choice in
            1)
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                echo "当前可用主题列表如下:"
                read -p "请输入要查看配置的主题名称:" topic_name
                kafka-configs.sh --bootstrap-server bigdata:9092 --describe --entity-type topics --entity-name $topic_name
                ;;
            2)
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                echo "当前可用主题列表如下:"
                read -p "请输入要修改配置的主题名称:" topic_name
                read -p "请输入配置项名称:" config_name
                read -p "请输入配置项值:" config_value
                kafka-configs.sh --bootstrap-server bigdata:9092 --alter --entity-type topics --entity-name $topic_name --add-config $config_name=$config_value
                ;;
            0)
                break
                ;;
            *)
                echo "无效的配置操作选择。"
                ;;
            esac
        done
        ;;
    5)
        # 消费者组操作菜单
        while true; do
            echo "消费者组操作功能:"
            echo "1. 查看消费者组列表"
            echo "2. 查看消费者组详情"
            echo "3. 重置消费者组偏移量"
            echo "0.返回命令大全系统界面"
            read -p "请输入消费者组操作选项数字:" consumer_group_choice

            case $consumer_group_choice in
            1)
                kafka-consumer-groups.sh --bootstrap-server bigdata:9092 --list
                ;;
            2)
                read -p "请输入要查看详情的消费者组名称:" group_name
                kafka-consumer-groups.sh --bootstrap-server bigdata:9092 --describe --group $group_name
                ;;
            3)
                read -p "请输入要重置偏移量的消费者组名称:" group_name
                read -p "请输入要重置偏移量的主题名称:" topic_name
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                echo "当前可用主题列表如下:"
                kafka-consumer-groups.sh --bootstrap-server bigdata:9092 --reset-offsets --group $group_name --topic $topic_name --to-earliest
                ;;
            0)
                break
                ;;
            *)
                echo "无效的消费者组操作选择。"
                ;;
            esac
        done
        ;;
    6)
        # 生产者性能测试菜单
        while true; do
            echo "生产者性能测试功能:"
            echo "1. 执行生产者性能测试"
            echo "2. 查看可用主题列表"
            echo "0.返回命令大全系统界面"
            read -p "请输入生产者性能测试选项数字:" producer_perf_choice

            case $producer_perf_choice in
            1)
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                echo "当前可用主题列表如下:"
                read -p "请输入要测试的主题名称:" topic_name
                existing_topics=$(kafka-topics.sh --bootstrap-server bigdata:9092 --list)
                if echo "$existing_topics" | grep -q "$topic_name"; then
                    while true; do
                        read -p "请输入要发送的记录数量(整数):" num_records
                        if [[ $num_records =~ ^[0-9]+$ ]]; then
                            break
                        else
                            echo "记录数量必须是整数,请重新输入。"
                        fi
                    done
                    while true; do
                        read -p "请输入每条记录的大小(整数,单位字节):" record_size
                        if [[ $record_size =~ ^[0-9]+$ ]]; then
                            break
                        else
                            echo "记录大小必须是整数,请重新输入。"
                        fi
                    done
                    kafka-producer-perf-test.sh --topic $topic_name --num-records $num_records --record-size $record_size --throughput -1 --producer-props bootstrap.servers=bigdata:9092
                else
                    echo "主题 $topic_name 不存在,请重新输入。"
                fi
                ;;
            2)
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                ;;
            0)
                break
                ;;
            *)
                echo "无效的生产者性能测试选择。"
                ;;
            esac
        done
        ;;
    7)
        # 消费者性能测试菜单
        while true; do
            echo "消费者性能测试功能:"
            echo "1. 执行消费者性能测试"
            echo "2. 查看可用主题列表"
            echo "0.返回命令大全系统界面"
            read -p "请输入消费者性能测试选项数字:" consumer_perf_choice

            case $consumer_perf_choice in
            1)
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                echo "当前可用主题列表如下:"
                read -p "请输入要测试的主题名称:" topic_name
                existing_topics=$(kafka-topics.sh --bootstrap-server bigdata:9092 --list)
                if echo "$existing_topics" | grep -q "$topic_name"; then
                    kafka-consumer-perf-test.sh --broker-list bigdata:9092 --topic $topic_name --messages 100000
                else
                    echo "主题 $topic_name 不存在,请重新输入。"
                fi
                ;;
            2)
                kafka-topics.sh --bootstrap-server bigdata:9092 --list
                ;;
            0)
                break
                ;;
            *)
                echo "无效的消费者性能测试选择。"
                ;;
            esac
        done
        ;;
    0)
        echo "退出脚本。"
        break
        ;;
    *)
        echo "无效的选择。"
        ;;
    esac
done

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值