feat: 初始化后端服务基础架构与核心组件
- 添加项目基础结构,包括 .gitignore、package.json、Docker 配置和环境变量示例 - 实现核心模块:Kafka 消费者、PostgreSQL 数据库管理器、Redis 客户端与错误队列 - 添加工具类:日志记录器、指标收集器、UUID 生成器 - 实现数据处理器,支持 0x36 上报和 0x0F 命令的解析与存储 - 添加数据库初始化脚本和分区管理,支持按时间范围分区 - 引入 Zod 数据验证和 Vitest 单元测试框架 - 提供完整的项目文档,包括数据库设计、Kafka 格式规范和 Redis 集成协议
This commit is contained in:
39
bls-rcu-action-backend/src/kafka/consumer.js
Normal file
39
bls-rcu-action-backend/src/kafka/consumer.js
Normal file
@@ -0,0 +1,39 @@
|
||||
import kafka from 'kafka-node';
|
||||
import { logger } from '../utils/logger.js';
|
||||
|
||||
const { ConsumerGroup } = kafka;
|
||||
|
||||
export const createKafkaConsumer = ({ kafkaConfig, onMessage, onError }) => {
|
||||
const kafkaHost = kafkaConfig.brokers.join(',');
|
||||
const consumer = new ConsumerGroup(
|
||||
{
|
||||
kafkaHost,
|
||||
groupId: kafkaConfig.groupId,
|
||||
clientId: kafkaConfig.clientId,
|
||||
fromOffset: 'earliest',
|
||||
protocol: ['roundrobin'],
|
||||
outOfRangeOffset: 'latest',
|
||||
autoCommit: true,
|
||||
sasl: kafkaConfig.sasl
|
||||
},
|
||||
kafkaConfig.topic
|
||||
);
|
||||
|
||||
consumer.on('message', (message) => {
|
||||
onMessage(message).catch((error) => {
|
||||
logger.error('Kafka message handling failed', { error: error?.message });
|
||||
if (onError) {
|
||||
onError(error, message);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
consumer.on('error', (error) => {
|
||||
logger.error('Kafka consumer error', { error: error?.message });
|
||||
if (onError) {
|
||||
onError(error);
|
||||
}
|
||||
});
|
||||
|
||||
return consumer;
|
||||
};
|
||||
Reference in New Issue
Block a user