diff --git a/backend/services/blockchain-service/src/domain/services/chain-config.service.ts b/backend/services/blockchain-service/src/domain/services/chain-config.service.ts index 91d7a0f0..29f86e68 100644 --- a/backend/services/blockchain-service/src/domain/services/chain-config.service.ts +++ b/backend/services/blockchain-service/src/domain/services/chain-config.service.ts @@ -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]; } /** diff --git a/backend/services/blockchain-service/src/infrastructure/kafka/deposit-ack-consumer.service.ts b/backend/services/blockchain-service/src/infrastructure/kafka/deposit-ack-consumer.service.ts index caba6f76..16ff9aab 100644 --- a/backend/services/blockchain-service/src/infrastructure/kafka/deposit-ack-consumer.service.ts +++ b/backend/services/blockchain-service/src/infrastructure/kafka/deposit-ack-consumer.service.ts @@ -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, }, }); diff --git a/backend/services/blockchain-service/src/infrastructure/kafka/mpc-event-consumer.service.ts b/backend/services/blockchain-service/src/infrastructure/kafka/mpc-event-consumer.service.ts index fd948178..cff98b82 100644 --- a/backend/services/blockchain-service/src/infrastructure/kafka/mpc-event-consumer.service.ts +++ b/backend/services/blockchain-service/src/infrastructure/kafka/mpc-event-consumer.service.ts @@ -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, }, }); diff --git a/backend/services/blockchain-service/src/infrastructure/kafka/withdrawal-event-consumer.service.ts b/backend/services/blockchain-service/src/infrastructure/kafka/withdrawal-event-consumer.service.ts index 3ad6b11d..7d905103 100644 --- a/backend/services/blockchain-service/src/infrastructure/kafka/withdrawal-event-consumer.service.ts +++ b/backend/services/blockchain-service/src/infrastructure/kafka/withdrawal-event-consumer.service.ts @@ -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, }, }); diff --git a/backend/services/identity-service/src/infrastructure/kafka/blockchain-event-consumer.service.ts b/backend/services/identity-service/src/infrastructure/kafka/blockchain-event-consumer.service.ts index 63786202..a5928a03 100644 --- a/backend/services/identity-service/src/infrastructure/kafka/blockchain-event-consumer.service.ts +++ b/backend/services/identity-service/src/infrastructure/kafka/blockchain-event-consumer.service.ts @@ -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, }, }); diff --git a/backend/services/identity-service/src/infrastructure/kafka/mpc-event-consumer.service.ts b/backend/services/identity-service/src/infrastructure/kafka/mpc-event-consumer.service.ts index f3b32448..67ea972b 100644 --- a/backend/services/identity-service/src/infrastructure/kafka/mpc-event-consumer.service.ts +++ b/backend/services/identity-service/src/infrastructure/kafka/mpc-event-consumer.service.ts @@ -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, }, }); diff --git a/backend/services/wallet-service/src/infrastructure/kafka/deposit-event-consumer.service.ts b/backend/services/wallet-service/src/infrastructure/kafka/deposit-event-consumer.service.ts index a010d5da..da4f19c2 100644 --- a/backend/services/wallet-service/src/infrastructure/kafka/deposit-event-consumer.service.ts +++ b/backend/services/wallet-service/src/infrastructure/kafka/deposit-event-consumer.service.ts @@ -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, // 失败后重启消费者 }, }); diff --git a/backend/services/wallet-service/src/infrastructure/kafka/planting-event-consumer.service.ts b/backend/services/wallet-service/src/infrastructure/kafka/planting-event-consumer.service.ts index beb87b03..5aa302e1 100644 --- a/backend/services/wallet-service/src/infrastructure/kafka/planting-event-consumer.service.ts +++ b/backend/services/wallet-service/src/infrastructure/kafka/planting-event-consumer.service.ts @@ -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, }, }); diff --git a/backend/services/wallet-service/src/infrastructure/kafka/withdrawal-event-consumer.service.ts b/backend/services/wallet-service/src/infrastructure/kafka/withdrawal-event-consumer.service.ts index 367660bf..a7c24d4e 100644 --- a/backend/services/wallet-service/src/infrastructure/kafka/withdrawal-event-consumer.service.ts +++ b/backend/services/wallet-service/src/infrastructure/kafka/withdrawal-event-consumer.service.ts @@ -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, }, });