Docker中Kafka容器创建/更新Topic支持多分区

ops/2025/3/3 17:56:34/

前提

自行通过docker部署好kafka,并启动相关容器
假设Topic为http_capture。

#docker-kafka
kafka_dir=/opt/docker/kafka/build
sudo rm -rf ${kafka_dir}/*
cat > ${kafka_dir}/docker-compose.yml <<EOF
version: "3.3"
services:zookeeper:image: zookeeper:3.5.5restart: alwayscontainer_name: dsms_zookeeperports:- "2181:2181"environment:- ZOO_MY_ID=1kafka:image: wurstmeister/kafka:2.13-2.8.1restart: alwayscontainer_name: dsms_kafkaenvironment:- KAFKA_BROKER_ID=1- KAFKA_ADVERTISED_HOST_NAME=${local_ip}- KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181- KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS=36000- KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://${local_ip}:9092- KAFKA_LISTENERS=PLAINTEXT://:9092ports:- "9092:9092"expose:- "9092"depends_on:- zookeeper
EOF
cd ${kafka_dir} && sudo /opt/bin/docker-compose up -d

Docker中Kafka容器创建/更新Topic支持多分区

检测Kafka运行正常后,如果Topic为http_capture的主题存在,则更新分区为5个,若不存在Topic,则新建。

#!/bin/bash# 检查 Kafka 容器是否正常运行
while ! docker ps --format '{{.Names}}' | grep -q "^dsms_kafka$"; doecho "等待 Kafka 容器启动..."sleep 5
doneecho "Kafka 容器已成功启动."# 在 Kafka 容器内执行命令,将结果保存到临时文件中
docker exec dsms_kafka kafka-topics.sh --list --zookeeper zookeeper:2181 > /tmp/kafka_topics_list.txt# 检查 http_capture 主题是否存在
if grep -q "^http_capture$" /tmp/kafka_topics_list.txt; thenecho "更新 http_capture 主题分区数量..."docker exec dsms_kafka kafka-topics.sh --alter --topic http_capture --partitions 5 --zookeeper zookeeper:2181
elseecho "创建新的 http_capture 主题..."docker exec dsms_kafka kafka-topics.sh --create --topic http_capture --partitions 5 --replication-factor 1 --zookeeper zookeeper:2181echo "新的 http_capture 主题创建成功."
fi# 删除临时文件
rm -f /tmp/kafka_topics_list.txt

http://www.ppmy.cn/ops/15706.html

相关文章

企业实施定制鞋厂ERP软件需要注意哪些问题?

企业实施定制鞋厂ERP软件是个复杂的管理系统工程&#xff0c;为了成功地为企业定制实施ERP软件&#xff0c;需要注意和解决几个关键的问题&#xff1a; . 确立ERP系统实施和定制的决策者&#xff1b;. 做好前期咨询与调研工作&#xff1b;. 做好系统产品或项目迭代规划&#x…

Node.js身份核验接口、身份证二、三要素实名认证接口

随着互联网的高速发展&#xff0c;人们可以发表言论的渠道越来越多。网络平台不断汲取各地、各人、各时发表的各种信息。人们喜欢将信息发布到微博、知乎、天涯、豆瓣等等网络平台&#xff0c;逐步的&#xff0c;网络信息进入大爆炸时代。这些大量涌现的信息中难免掺杂着一些不…

Linux export指令设置环境变量不生效

应用启动需要设置环境环境&#xff0c;但是环境变量的名字中包含点&#xff0c;而export的命令是不支持多带点的环境变量的&#xff0c;但是应用没法更改。此时可以使用如下命令 # env -i "a.b.c123" "a b c123" " 123" sh -c "env" …

python 批量压缩文件并生成解压密码

第一步&#xff1a;安装必要的Python库 你需要安装Python和一个名为py7zr的库&#xff0c;后者用于处理7z压缩文件。你可以通过以下命令安装这个库&#xff1a; pip install py7zr第二步&#xff1a;创建Python脚本 以下是一个Python脚本的示例&#xff0c;它将遍历指定目录…

CTF网络安全大赛详情

网络安全已成为现代社会的一个关键挑战&#xff0c;随着互联网技术的飞速发展&#xff0c;从个人隐私保护到国家安全&#xff0c;网络安全的重要性日益突显。为了应对这一挑战&#xff0c;CTF&#xff08;Capture The Flag&#xff0c;中文&#xff1a;夺旗赛&#xff09;应运而…

TypeError: Unknown file extension “.ts“

报错 ts-node effect.ts ts-node 是一个 Node.js 的 TypeScript 执行器&#xff0c;它可以实时将 TypeScript 代码编译成 JavaScript 并执行。你可以通过 npm install -g ts-node 安装 ts-node&#xff08;全局安装&#xff09;&#xff0c;然后使用 ts-node 命令来执行 .ts 文…

redis实现未支付时间超时就删除订单,并给前端反应一个已过期

1.创建订单缓存&#xff0c;设置过期时间为一分钟 now 是一个表示当前时间的对象&#xff0c;offset 方法用于对当前时间进行偏移。 redisTemplate.expireAt(paymentKey, now.offset(DateField.SECOND, 60)); 2.创建KeyExpiredListener类并且继承KeyExpirationEventMessageLis…

架构师系列-消息中间件(九)- RocketMQ 进阶(三)-消费端消息保障

5.2 消费端保障 5.2.1 注意幂等性 应用程序在使用RocketMQ进行消息消费时必须支持幂等消费&#xff0c;即同一个消息被消费多次和消费一次的结果一样&#xff0c;这一点在使用RoketMQ或者分析RocketMQ源代码之前再怎么强调也不为过。 “至少一次送达”的消息交付策略&#xff…