78 lines
2.0 KiB
JavaScript
78 lines
2.0 KiB
JavaScript
|
|
// 项目入口文件
|
||
|
|
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 };
|