@@ -14,6 +14,9 @@ import type { Kysely } from 'kysely';
1414import type { RedisClientType } from 'redis' ;
1515import type { Database } from '../persistence/postgres/database.js' ;
1616import type { Config } from '../config/config.js' ;
17+ import type { QueueClient , WorkerManager } from '../queue/index.js' ;
18+ import type { QueueProcessorsResult } from '../queue/bootstrap.js' ;
19+ import { bootstrapQueueProcessors } from '../queue/bootstrap.js' ;
1720
1821// Repository 实现
1922import { TaskRepositoryImpl } from '../../domains/task/repository/task_repo.js' ;
@@ -37,13 +40,20 @@ import { createAuthMiddleware } from '../middleware/auth.js';
3740// Event Bus
3841import { createEventBus , type EventBus } from '../../domains/shared/events/event_bus.js' ;
3942
43+ // Queue
44+ import { createQueueClient } from '../queue/client.js' ;
45+ import { createWorkerManager } from '../queue/worker.js' ;
46+
4047/**
4148 * 应用依赖容器
4249 * 包含所有领域的 Handler Dependencies 和 Middleware
4350 */
4451export interface AppContainer {
4552 // 基础设施
4653 eventBus : EventBus ;
54+ queueClient : QueueClient | null ;
55+ workerManager : WorkerManager | null ;
56+ queueProcessors : QueueProcessorsResult | null ; // 队列处理器引导结果
4757
4858 // Auth 领域
4959 authHandlerDeps : AuthHandlerDependencies ;
@@ -64,18 +74,40 @@ export interface AppContainer {
6474 * @param _redis Redis 连接(可选,保留用于未来扩展)
6575 * @returns 应用依赖容器
6676 */
67- export function initDependencies (
77+ export async function initDependencies (
6878 config : Config ,
6979 db : Kysely < Database > ,
7080 _redis : RedisClientType | null = null
71- ) : AppContainer {
81+ ) : Promise < AppContainer > {
7282 // ============================================
7383 // Infrastructure Layer(基础设施层)
7484 // ============================================
7585
7686 // 事件总线(用于领域间通信)
7787 const eventBus = createEventBus ( ) ;
7888
89+ // 队列客户端和 Worker 管理器(如果启用)
90+ let queueClient : QueueClient | null = null ;
91+ let workerManager : WorkerManager | null = null ;
92+ let queueProcessors : QueueProcessorsResult | null = null ;
93+
94+ if ( config . queue . enabled && _redis ) {
95+ const queueRedisConfig = {
96+ host : config . redis . host ,
97+ port : config . redis . port ,
98+ password : config . redis . password || undefined ,
99+ db : config . queue . redisDb ,
100+ } ;
101+
102+ queueClient = createQueueClient ( queueRedisConfig ) ;
103+ workerManager = createWorkerManager ( queueRedisConfig ) ;
104+
105+ // 引导并注册所有队列处理器(领域自注册模式)
106+ queueProcessors = await bootstrapQueueProcessors ( {
107+ includeExamples : config . server . env === 'development' ,
108+ } ) ;
109+ }
110+
79111 // ============================================
80112 // Repository Layer(基础设施层):数据访问
81113 // ============================================
@@ -139,6 +171,9 @@ export function initDependencies(
139171
140172 return {
141173 eventBus,
174+ queueClient,
175+ workerManager,
176+ queueProcessors,
142177 authHandlerDeps,
143178 authMiddleware,
144179 userHandlerDeps,
0 commit comments