feat: 实现数据库初始化配置化,新增环境变量 ENABLE_DATABASE_INITIALIZATION,修改初始化逻辑以支持启用/禁用数据库初始化和分区维护
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -41,3 +41,8 @@ REDIS_API_BASE_URL=http://localhost:3000
|
||||
# ROOM_STATUS_DB_TABLE=room_status_moment
|
||||
|
||||
ENABLE_LOOP_NAME_AUTO_GENERATION=true
|
||||
# Database Initialization Configuration
|
||||
# Set to 'false' to skip automatic database creation, schema setup, and partition management
|
||||
# When disabled, the service will start consuming Kafka messages and writing to existing database immediately
|
||||
# Default: true (enable database initialization)
|
||||
ENABLE_DATABASE_INITIALIZATION=true
|
||||
@@ -64,5 +64,6 @@ export const config = {
|
||||
schema: process.env.ROOM_STATUS_DB_SCHEMA || 'room_status',
|
||||
table: process.env.ROOM_STATUS_DB_TABLE || 'room_status_moment'
|
||||
},
|
||||
enableLoopNameAutoGeneration: process.env.ENABLE_LOOP_NAME_AUTO_GENERATION === 'true'
|
||||
enableLoopNameAutoGeneration: process.env.ENABLE_LOOP_NAME_AUTO_GENERATION === 'true',
|
||||
enableDatabaseInitialization: process.env.ENABLE_DATABASE_INITIALIZATION !== 'false'
|
||||
};
|
||||
|
||||
@@ -18,7 +18,13 @@ import { BatchProcessor } from './db/batchProcessor.js';
|
||||
|
||||
const bootstrap = async () => {
|
||||
// 0. Initialize Database (Create DB, Schema, Table, Partitions)
|
||||
await dbInitializer.initialize();
|
||||
// Only execute initialization if enabled (default: true)
|
||||
if (config.enableDatabaseInitialization) {
|
||||
logger.info('Database initialization is enabled. Starting initialization...');
|
||||
await dbInitializer.initialize();
|
||||
} else {
|
||||
logger.info('Database initialization is disabled. Skipping database initialization, schema creation, and partition setup.');
|
||||
}
|
||||
|
||||
// 0.1 Initialize Project Metadata Cache
|
||||
await projectMetadata.init();
|
||||
@@ -27,14 +33,19 @@ const bootstrap = async () => {
|
||||
const metricCollector = new MetricCollector();
|
||||
|
||||
// 1. Setup Partition Maintenance Cron Job (Every day at 00:00)
|
||||
cron.schedule('0 0 * * *', async () => {
|
||||
logger.info('Running scheduled partition maintenance...');
|
||||
try {
|
||||
await partitionManager.ensurePartitions(30);
|
||||
} catch (err) {
|
||||
logger.error('Scheduled partition maintenance failed', err);
|
||||
}
|
||||
});
|
||||
// Only setup partition maintenance cron if database initialization is enabled
|
||||
if (config.enableDatabaseInitialization) {
|
||||
cron.schedule('0 0 * * *', async () => {
|
||||
logger.info('Running scheduled partition maintenance...');
|
||||
try {
|
||||
await partitionManager.ensurePartitions(30);
|
||||
} catch (err) {
|
||||
logger.error('Scheduled partition maintenance failed', err);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
logger.info('Partition maintenance cron job is disabled (database initialization is disabled).');
|
||||
}
|
||||
|
||||
// 1.1 Setup Metric Reporting Cron Job (Every minute)
|
||||
// Moved after redisIntegration initialization
|
||||
|
||||
Reference in New Issue
Block a user