diff --git a/backend/services/contribution-service/src/application/event-handlers/cdc-event-dispatcher.ts b/backend/services/contribution-service/src/application/event-handlers/cdc-event-dispatcher.ts index b79d78fd..c162a164 100644 --- a/backend/services/contribution-service/src/application/event-handlers/cdc-event-dispatcher.ts +++ b/backend/services/contribution-service/src/application/event-handlers/cdc-event-dispatcher.ts @@ -51,14 +51,14 @@ export class CDCEventDispatcher implements OnModuleInit { this.handleAdoptionPostCommit.bind(this), ); - // 启动 CDC 消费者 - try { - await this.cdcConsumer.start(); + // 启动 CDC 消费者(非阻塞,在后台运行顺序同步) + // 不能 await,否则会阻塞服务启动,导致 HTTP 端点无法访问 + this.cdcConsumer.start().then(() => { this.logger.log('CDC event dispatcher started with transactional idempotency'); - } catch (error) { + }).catch((error) => { this.logger.error('Failed to start CDC event dispatcher', error); // 不抛出错误,允许服务在没有 Kafka 的情况下启动(用于本地开发) - } + }); } private async handleUserEvent(event: CDCEvent, tx: TransactionClient): Promise {