feat: 暂时禁用 BSC 链,添加 Kafka 企业级重试配置

- blockchain-service: getSupportedChains() 只返回 KAVA
- 所有 Kafka consumer 添加企业级重试配置(15次重试,指数退避)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
hailin 2025-12-15 22:33:34 -08:00
parent 286e6aad01
commit c1fe54a8d4
9 changed files with 57 additions and 17 deletions

View File

@ -98,9 +98,13 @@ export class ChainConfigService {
/**
*
*
* KAVA BSC
*/
getSupportedChains(): ChainTypeEnum[] {
return Array.from(this.configs.keys());
// TODO: BSC 链暂时禁用,未来需要时可以恢复
// return Array.from(this.configs.keys());
return [ChainTypeEnum.KAVA];
}
/**

View File

@ -48,13 +48,17 @@ export class DepositAckConsumerService implements OnModuleInit, OnModuleDestroy
this.logger.log(`[INIT] Brokers: ${brokers}`);
this.logger.log(`[INIT] Topics: ${Object.values(ACK_TOPICS).join(', ')}`);
// 企业级重试配置:指数退避,最多重试约 2.5 小时
this.kafka = new Kafka({
clientId,
brokers,
logLevel: logLevel.WARN,
retry: {
initialRetryTime: 100,
retries: 8,
initialRetryTime: 1000, // 1 秒
maxRetryTime: 300000, // 最大 5 分钟
retries: 15, // 最多 15 次
multiplier: 2, // 指数退避因子
restartOnFailure: async () => true,
},
});

View File

@ -91,13 +91,17 @@ export class MpcEventConsumerService implements OnModuleInit, OnModuleDestroy {
this.logger.log(`[INIT] Brokers: ${brokers.join(', ')}`);
this.logger.log(`[INIT] Topics to subscribe: ${Object.values(MPC_TOPICS).join(', ')}`);
// 企业级重试配置:指数退避,最多重试约 2.5 小时
this.kafka = new Kafka({
clientId,
brokers,
logLevel: logLevel.WARN,
retry: {
initialRetryTime: 100,
retries: 8,
initialRetryTime: 1000, // 1 秒
maxRetryTime: 300000, // 最大 5 分钟
retries: 15, // 最多 15 次
multiplier: 2, // 指数退避因子
restartOnFailure: async () => true,
},
});

View File

@ -50,13 +50,17 @@ export class WithdrawalEventConsumerService implements OnModuleInit, OnModuleDes
this.logger.log(`[INIT] Brokers: ${brokers.join(', ')}`);
this.logger.log(`[INIT] Topics: ${Object.values(WITHDRAWAL_TOPICS).join(', ')}`);
// 企业级重试配置:指数退避,最多重试约 2.5 小时
this.kafka = new Kafka({
clientId,
brokers,
logLevel: logLevel.WARN,
retry: {
initialRetryTime: 100,
retries: 8,
initialRetryTime: 1000, // 1 秒
maxRetryTime: 300000, // 最大 5 分钟
retries: 15, // 最多 15 次
multiplier: 2, // 指数退避因子
restartOnFailure: async () => true,
},
});

View File

@ -51,13 +51,17 @@ export class BlockchainEventConsumerService implements OnModuleInit, OnModuleDes
this.logger.log(`[INIT] Brokers: ${brokers.join(', ')}`);
this.logger.log(`[INIT] Topics to subscribe: ${Object.values(BLOCKCHAIN_TOPICS).join(', ')}`);
// 企业级重试配置:指数退避,最多重试约 2.5 小时
this.kafka = new Kafka({
clientId,
brokers,
logLevel: logLevel.WARN,
retry: {
initialRetryTime: 100,
retries: 8,
initialRetryTime: 1000, // 1 秒
maxRetryTime: 300000, // 最大 5 分钟
retries: 15, // 最多 15 次
multiplier: 2, // 指数退避因子
restartOnFailure: async () => true,
},
});

View File

@ -95,13 +95,17 @@ export class MpcEventConsumerService implements OnModuleInit, OnModuleDestroy {
this.logger.log(`[INIT] Brokers: ${brokers.join(', ')}`);
this.logger.log(`[INIT] Topics to subscribe: ${Object.values(MPC_TOPICS).join(', ')}`);
// 企业级重试配置:指数退避,最多重试约 2.5 小时
this.kafka = new Kafka({
clientId,
brokers,
logLevel: logLevel.WARN,
retry: {
initialRetryTime: 100,
retries: 8,
initialRetryTime: 1000, // 1 秒
maxRetryTime: 300000, // 最大 5 分钟
retries: 15, // 最多 15 次
multiplier: 2, // 指数退避因子
restartOnFailure: async () => true,
},
});

View File

@ -49,13 +49,21 @@ export class DepositEventConsumerService implements OnModuleInit, OnModuleDestro
this.logger.log(`[INIT] Brokers: ${brokers.join(', ')}`);
this.logger.log(`[INIT] Topics: ${Object.values(DEPOSIT_TOPICS).join(', ')}`);
// 企业级重试配置:
// - 初始重试间隔 1 秒
// - 最大重试间隔 5 分钟
// - 最多重试 15 次(指数退避约 2.5 小时)
// - 乘数因子 2每次重试间隔翻倍
this.kafka = new Kafka({
clientId,
brokers,
logLevel: logLevel.WARN,
retry: {
initialRetryTime: 100,
retries: 8,
initialRetryTime: 1000, // 1 秒
maxRetryTime: 300000, // 最大 5 分钟
retries: 15, // 最多 15 次
multiplier: 2, // 指数退避因子
restartOnFailure: async () => true, // 失败后重启消费者
},
});

View File

@ -46,13 +46,17 @@ export class PlantingEventConsumerService implements OnModuleInit, OnModuleDestr
this.logger.log(`[INIT] Brokers: ${brokers.join(', ')}`);
this.logger.log(`[INIT] Topics: ${Object.values(PLANTING_TOPICS).join(', ')}`);
// 企业级重试配置:指数退避,最多重试约 2.5 小时
this.kafka = new Kafka({
clientId: `${clientId}-planting`,
brokers,
logLevel: logLevel.WARN,
retry: {
initialRetryTime: 100,
retries: 8,
initialRetryTime: 1000, // 1 秒
maxRetryTime: 300000, // 最大 5 分钟
retries: 15, // 最多 15 次
multiplier: 2, // 指数退避因子
restartOnFailure: async () => true,
},
});

View File

@ -61,13 +61,17 @@ export class WithdrawalEventConsumerService implements OnModuleInit, OnModuleDes
this.logger.log(`[INIT] GroupId: ${groupId}`);
this.logger.log(`[INIT] Brokers: ${brokers.join(', ')}`);
// 企业级重试配置:指数退避,最多重试约 2.5 小时
this.kafka = new Kafka({
clientId,
brokers,
logLevel: logLevel.WARN,
retry: {
initialRetryTime: 100,
retries: 8,
initialRetryTime: 1000, // 1 秒
maxRetryTime: 300000, // 最大 5 分钟
retries: 15, // 最多 15 次
multiplier: 2, // 指数退避因子
restartOnFailure: async () => true,
},
});