2025-08-27 11:24:22 +08:00
|
|
|
|
import { Injectable } from '@nestjs/common';
|
2025-09-21 21:29:28 +08:00
|
|
|
|
import { UnifiedQueueService } from '@wwjCore/queue/unifiedQueueService';
|
2025-08-27 11:24:22 +08:00
|
|
|
|
|
|
|
|
|
|
@Injectable()
|
|
|
|
|
|
export class TestService {
|
2025-09-21 21:29:28 +08:00
|
|
|
|
constructor(private readonly unifiedQueueService: UnifiedQueueService) {}
|
2025-08-27 11:24:22 +08:00
|
|
|
|
|
|
|
|
|
|
async publishKafkaEvent(
|
|
|
|
|
|
topic: string,
|
|
|
|
|
|
data: Record<string, any>,
|
|
|
|
|
|
): Promise<void> {
|
2025-09-21 21:29:28 +08:00
|
|
|
|
await this.unifiedQueueService.publishEvent({
|
|
|
|
|
|
eventType: topic,
|
|
|
|
|
|
aggregateId: 'test-aggregate',
|
|
|
|
|
|
aggregateType: 'Test',
|
|
|
|
|
|
version: '1.0',
|
2025-08-27 11:24:22 +08:00
|
|
|
|
occurredAt: new Date().toISOString(),
|
2025-09-21 21:29:28 +08:00
|
|
|
|
tenantId: '0',
|
|
|
|
|
|
idempotencyKey: `key_${Date.now()}`,
|
|
|
|
|
|
traceId: `trace_${Date.now()}`,
|
|
|
|
|
|
data,
|
2025-08-27 11:24:22 +08:00
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async enqueueRedisJob(
|
|
|
|
|
|
type: string,
|
|
|
|
|
|
payload: Record<string, any>,
|
|
|
|
|
|
): Promise<string> {
|
2025-09-21 21:29:28 +08:00
|
|
|
|
await this.unifiedQueueService.addTask('test-queue', type, payload, {
|
2025-08-27 11:24:22 +08:00
|
|
|
|
attempts: 3,
|
2025-09-21 21:29:28 +08:00
|
|
|
|
backoff: { type: 'fixed', delay: 1000 },
|
2025-08-27 11:24:22 +08:00
|
|
|
|
removeOnComplete: true,
|
|
|
|
|
|
removeOnFail: false,
|
|
|
|
|
|
});
|
|
|
|
|
|
|
2025-09-21 21:29:28 +08:00
|
|
|
|
// 生成一个模拟的 job ID(测试用)
|
2025-08-27 11:24:22 +08:00
|
|
|
|
return `job_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|