diff --git a/backend/services/identity-service/scripts/rebuild-kafka.sh b/backend/services/identity-service/scripts/rebuild-kafka.sh new file mode 100644 index 00000000..d2ebe801 --- /dev/null +++ b/backend/services/identity-service/scripts/rebuild-kafka.sh @@ -0,0 +1,76 @@ +#!/bin/bash +# 重建 Kafka 容器以应用新的配置 + +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +RED='\033[0;31m' +BLUE='\033[0;34m' +NC='\033[0m' + +echo -e "${YELLOW}🔄 重建 Kafka 容器...${NC}" +echo "" + +# 1. 停止 Identity Service (如果在运行) +echo -e "${BLUE}步骤 1: 停止 Identity Service${NC}" +PID=$(lsof -ti :3000 2>/dev/null) +if [ ! -z "$PID" ]; then + echo "停止 Identity Service (PID: $PID)..." + kill $PID + sleep 2 + echo -e "${GREEN}✓ Identity Service 已停止${NC}" +else + echo -e "${YELLOW}⚠️ Identity Service 未在运行${NC}" +fi +echo "" + +# 2. 停止并删除 Kafka 和 Zookeeper 容器 +echo -e "${BLUE}步骤 2: 停止并删除旧容器${NC}" +docker compose stop kafka zookeeper +docker compose rm -f kafka zookeeper +echo -e "${GREEN}✓ 旧容器已删除${NC}" +echo "" + +# 3. 重新创建容器 +echo -e "${BLUE}步骤 3: 创建新容器${NC}" +docker compose up -d zookeeper +echo "等待 Zookeeper 启动..." +sleep 5 + +docker compose up -d kafka +echo "等待 Kafka 启动..." +sleep 20 +echo -e "${GREEN}✓ Kafka 容器已创建${NC}" +echo "" + +# 4. 验证新配置 +echo -e "${BLUE}步骤 4: 验证配置${NC}" +ADVERTISED=$(docker inspect identity-service-kafka-1 2>/dev/null | grep -A 1 "KAFKA_ADVERTISED_LISTENERS" | head -1) + +if echo "$ADVERTISED" | grep -q "localhost:9092"; then + echo -e "${GREEN}✓ Kafka 配置已更新!${NC}" + echo "$ADVERTISED" +else + echo -e "${RED}✗ Kafka 配置仍然不正确${NC}" + echo "$ADVERTISED" + exit 1 +fi +echo "" + +# 5. 测试连接 +echo -e "${BLUE}步骤 5: 测试 Kafka 连接${NC}" +if nc -zv localhost 9092 2>&1 | grep -q "succeeded"; then + echo -e "${GREEN}✓ Kafka 端口可访问${NC}" +else + echo -e "${RED}✗ Kafka 端口不可访问${NC}" + exit 1 +fi +echo "" + +echo -e "${YELLOW}======================================${NC}" +echo -e "${GREEN}✓ Kafka 重建完成!${NC}" +echo -e "${YELLOW}======================================${NC}" +echo "" +echo -e "${BLUE}下一步:${NC}" +echo "1. 启动 Identity Service: npm run start:dev" +echo "2. 运行健康检查: ./scripts/health-check.sh" +echo "3. 运行快速测试: ./scripts/quick-test.sh"