feat: 初始化BLS心跳接收端项目

- 添加基础项目结构,包括.gitignore、vite配置和package.json
- 实现Kafka消费者模块框架
- 添加心跳处理器模块框架
- 实现数据库管理模块框架
- 添加OpenSpec规范文档
- 更新README文档说明项目功能和技术栈
This commit is contained in:
2026-01-08 09:16:53 +08:00
parent 24654c4b90
commit adc3bfd87d
19 changed files with 5549 additions and 1 deletions

78
src/index.js Normal file
View File

@@ -0,0 +1,78 @@
// 项目入口文件
import config from './config/config.js';
import { KafkaConsumer } from './kafka/consumer.js';
import { HeartbeatProcessor } from './processor/heartbeatProcessor.js';
import { DatabaseManager } from './db/databaseManager.js';
class WebBLSHeartbeatServer {
constructor() {
this.config = config;
this.kafkaConsumer = null;
this.heartbeatProcessor = null;
this.databaseManager = null;
}
async start() {
try {
// 初始化数据库连接
this.databaseManager = new DatabaseManager(this.config.db);
await this.databaseManager.connect();
console.log('数据库连接成功');
// 初始化处理器
this.heartbeatProcessor = new HeartbeatProcessor(
this.config.processor,
this.databaseManager
);
// 初始化Kafka消费者
this.kafkaConsumer = new KafkaConsumer(
this.config.kafka,
this.heartbeatProcessor.processMessage.bind(this.heartbeatProcessor)
);
await this.kafkaConsumer.connect();
await this.kafkaConsumer.subscribe();
await this.kafkaConsumer.startConsuming();
console.log('Kafka消费者启动成功');
console.log('BLS心跳接收端启动成功');
} catch (error) {
console.error('启动失败:', error);
process.exit(1);
}
}
async stop() {
try {
if (this.kafkaConsumer) {
await this.kafkaConsumer.stopConsuming();
await this.kafkaConsumer.disconnect();
}
if (this.databaseManager) {
await this.databaseManager.disconnect();
}
console.log('BLS心跳接收端已停止');
} catch (error) {
console.error('停止失败:', error);
}
}
}
// 启动服务器
const server = new WebBLSHeartbeatServer();
server.start();
// 处理进程终止信号
process.on('SIGINT', () => {
server.stop();
process.exit(0);
});
process.on('SIGTERM', () => {
server.stop();
process.exit(0);
});
export { WebBLSHeartbeatServer };