forked from StellarSplit/StellarSplit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathbatch.module.ts
More file actions
83 lines (81 loc) · 2.68 KB
/
Copy pathbatch.module.ts
File metadata and controls
83 lines (81 loc) · 2.68 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import { Module } from "@nestjs/common";
import { TypeOrmModule } from "@nestjs/typeorm";
import { BullModule } from "@nestjs/bull";
import { ConfigModule, ConfigService } from "@nestjs/config";
import { BatchJob } from "./entities/batch-job.entity";
import { BatchOperation } from "./entities/batch-operation.entity";
import { BatchService } from "./batch.service";
import { BatchController } from "./batch.controller";
import { SplitBatchProcessor } from "./processors/split-batch.processor";
import { PaymentBatchProcessor } from "./processors/payment-batch.processor";
import { ScheduledBatchProcessor } from "./processors/scheduled-batch.processor";
import { BatchProgressService } from "./batch-progress.service";
import { BatchEventsService } from "./batch-events.service";
import { PaymentsModule } from "../payments/payments.module";
@Module({
imports: [
TypeOrmModule.forFeature([BatchJob, BatchOperation]),
PaymentsModule,
BullModule.registerQueueAsync(
{
name: "batch_splits",
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
defaultJobOptions: {
attempts: configService.get<number>("BATCH_RETRY_ATTEMPTS", 5),
backoff: {
type: "exponential",
delay: configService.get<number>("BATCH_RETRY_DELAY_MS", 2000),
},
removeOnComplete: false,
removeOnFail: false,
},
}),
inject: [ConfigService],
},
{
name: "batch_payments",
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
defaultJobOptions: {
attempts: configService.get<number>("BATCH_RETRY_ATTEMPTS", 5),
backoff: {
type: "exponential",
delay: configService.get<number>("BATCH_RETRY_DELAY_MS", 2000),
},
removeOnComplete: false,
removeOnFail: false,
},
}),
inject: [ConfigService],
},
{
name: "batch_scheduled",
imports: [ConfigModule],
useFactory: (configService: ConfigService) => ({
defaultJobOptions: {
attempts: 3,
backoff: {
type: "fixed",
delay: 5000,
},
removeOnComplete: true,
removeOnFail: false,
},
}),
inject: [ConfigService],
},
),
],
controllers: [BatchController],
providers: [
BatchService,
BatchProgressService,
BatchEventsService,
SplitBatchProcessor,
PaymentBatchProcessor,
ScheduledBatchProcessor,
],
exports: [BatchService, BatchProgressService],
})
export class BatchModule {}