enhance(backend): 古いバージョンで作成され現在使われなくなったrepeatableジョブをクリーンアップするように
This commit is contained in:
parent
a45e89c300
commit
862a6fae79
|
@ -53,6 +53,33 @@ export const QUEUE_TYPES = [
|
||||||
'systemWebhookDeliver',
|
'systemWebhookDeliver',
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
|
const REPEATABLE_SYSTEM_JOB_DEF = [{
|
||||||
|
name: 'tickCharts',
|
||||||
|
pattern: '55 * * * *',
|
||||||
|
}, {
|
||||||
|
name: 'resyncCharts',
|
||||||
|
pattern: '0 0 * * *',
|
||||||
|
}, {
|
||||||
|
name: 'cleanCharts',
|
||||||
|
pattern: '0 0 * * *',
|
||||||
|
}, {
|
||||||
|
name: 'aggregateRetention',
|
||||||
|
pattern: '0 0 * * *',
|
||||||
|
}, {
|
||||||
|
name: 'clean',
|
||||||
|
pattern: '0 0 * * *',
|
||||||
|
}, {
|
||||||
|
name: 'checkExpiredMutings',
|
||||||
|
pattern: '*/5 * * * *',
|
||||||
|
}, {
|
||||||
|
name: 'bakeBufferedReactions',
|
||||||
|
pattern: '0 0 * * *',
|
||||||
|
}, {
|
||||||
|
name: 'checkModeratorsActivity',
|
||||||
|
// 毎時30分に起動
|
||||||
|
pattern: '30 * * * *',
|
||||||
|
}];
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class QueueService {
|
export class QueueService {
|
||||||
constructor(
|
constructor(
|
||||||
|
@ -69,85 +96,25 @@ export class QueueService {
|
||||||
@Inject('queue:userWebhookDeliver') public userWebhookDeliverQueue: UserWebhookDeliverQueue,
|
@Inject('queue:userWebhookDeliver') public userWebhookDeliverQueue: UserWebhookDeliverQueue,
|
||||||
@Inject('queue:systemWebhookDeliver') public systemWebhookDeliverQueue: SystemWebhookDeliverQueue,
|
@Inject('queue:systemWebhookDeliver') public systemWebhookDeliverQueue: SystemWebhookDeliverQueue,
|
||||||
) {
|
) {
|
||||||
this.systemQueue.upsertJobScheduler('tickCharts', {
|
for (const def of REPEATABLE_SYSTEM_JOB_DEF) {
|
||||||
pattern: '55 * * * *',
|
this.systemQueue.upsertJobScheduler(def.name, {
|
||||||
}, {
|
pattern: def.pattern,
|
||||||
name: 'tickCharts',
|
}, {
|
||||||
opts: {
|
name: def.name,
|
||||||
removeOnComplete: 10,
|
opts: {
|
||||||
removeOnFail: 30,
|
removeOnComplete: 10,
|
||||||
},
|
removeOnFail: 30,
|
||||||
});
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
this.systemQueue.upsertJobScheduler('resyncCharts', {
|
// 古いバージョンで作成され現在使われなくなったrepeatableジョブをクリーンアップ
|
||||||
pattern: '0 0 * * *',
|
this.systemQueue.getJobSchedulers().then(schedulers => {
|
||||||
}, {
|
for (const scheduler of schedulers) {
|
||||||
name: 'resyncCharts',
|
if (!REPEATABLE_SYSTEM_JOB_DEF.some(def => def.name === scheduler.key)) {
|
||||||
opts: {
|
this.systemQueue.removeJobScheduler(scheduler.key);
|
||||||
removeOnComplete: 10,
|
}
|
||||||
removeOnFail: 30,
|
}
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
this.systemQueue.upsertJobScheduler('cleanCharts', {
|
|
||||||
pattern: '0 0 * * *',
|
|
||||||
}, {
|
|
||||||
name: 'cleanCharts',
|
|
||||||
opts: {
|
|
||||||
removeOnComplete: 10,
|
|
||||||
removeOnFail: 30,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
this.systemQueue.upsertJobScheduler('aggregateRetention', {
|
|
||||||
pattern: '0 0 * * *',
|
|
||||||
}, {
|
|
||||||
name: 'aggregateRetention',
|
|
||||||
opts: {
|
|
||||||
removeOnComplete: 10,
|
|
||||||
removeOnFail: 30,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
this.systemQueue.upsertJobScheduler('clean', {
|
|
||||||
pattern: '0 0 * * *',
|
|
||||||
}, {
|
|
||||||
name: 'clean',
|
|
||||||
opts: {
|
|
||||||
removeOnComplete: 10,
|
|
||||||
removeOnFail: 30,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
this.systemQueue.upsertJobScheduler('checkExpiredMutings', {
|
|
||||||
pattern: '*/5 * * * *',
|
|
||||||
}, {
|
|
||||||
name: 'checkExpiredMutings',
|
|
||||||
opts: {
|
|
||||||
removeOnComplete: 10,
|
|
||||||
removeOnFail: 30,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
this.systemQueue.upsertJobScheduler('bakeBufferedReactions', {
|
|
||||||
pattern: '0 0 * * *',
|
|
||||||
}, {
|
|
||||||
name: 'bakeBufferedReactions',
|
|
||||||
opts: {
|
|
||||||
removeOnComplete: 10,
|
|
||||||
removeOnFail: 30,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
this.systemQueue.upsertJobScheduler('checkModeratorsActivity', {
|
|
||||||
// 毎時30分に起動
|
|
||||||
pattern: '30 * * * *',
|
|
||||||
}, {
|
|
||||||
name: 'checkModeratorsActivity',
|
|
||||||
opts: {
|
|
||||||
removeOnComplete: 10,
|
|
||||||
removeOnFail: 30,
|
|
||||||
},
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue