@quave/agenda 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +25 -0
- package/README.md +380 -0
- package/dist/Job.d.ts +190 -0
- package/dist/Job.js +689 -0
- package/dist/Job.js.map +1 -0
- package/dist/JobProcessingQueue.d.ts +47 -0
- package/dist/JobProcessingQueue.js +107 -0
- package/dist/JobProcessingQueue.js.map +1 -0
- package/dist/JobProcessor.d.ts +72 -0
- package/dist/JobProcessor.js +512 -0
- package/dist/JobProcessor.js.map +1 -0
- package/dist/backends/index.d.ts +18 -0
- package/dist/backends/index.js +20 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/cjs/Job.d.ts +190 -0
- package/dist/cjs/Job.js +696 -0
- package/dist/cjs/Job.js.map +1 -0
- package/dist/cjs/JobProcessingQueue.d.ts +47 -0
- package/dist/cjs/JobProcessingQueue.js +111 -0
- package/dist/cjs/JobProcessingQueue.js.map +1 -0
- package/dist/cjs/JobProcessor.d.ts +72 -0
- package/dist/cjs/JobProcessor.js +519 -0
- package/dist/cjs/JobProcessor.js.map +1 -0
- package/dist/cjs/backends/index.d.ts +17 -0
- package/dist/cjs/backends/index.js +20 -0
- package/dist/cjs/backends/index.js.map +1 -0
- package/dist/cjs/decorators/Define.d.ts +33 -0
- package/dist/cjs/decorators/Define.js +47 -0
- package/dist/cjs/decorators/Define.js.map +1 -0
- package/dist/cjs/decorators/Every.d.ts +43 -0
- package/dist/cjs/decorators/Every.js +58 -0
- package/dist/cjs/decorators/Every.js.map +1 -0
- package/dist/cjs/decorators/JobsController.d.ts +43 -0
- package/dist/cjs/decorators/JobsController.js +40 -0
- package/dist/cjs/decorators/JobsController.js.map +1 -0
- package/dist/cjs/decorators/index.d.ts +41 -0
- package/dist/cjs/decorators/index.js +57 -0
- package/dist/cjs/decorators/index.js.map +1 -0
- package/dist/cjs/decorators/metadata.d.ts +50 -0
- package/dist/cjs/decorators/metadata.js +41 -0
- package/dist/cjs/decorators/metadata.js.map +1 -0
- package/dist/cjs/decorators/register.d.ts +52 -0
- package/dist/cjs/decorators/register.js +145 -0
- package/dist/cjs/decorators/register.js.map +1 -0
- package/dist/cjs/index.d.ts +498 -0
- package/dist/cjs/index.js +776 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/notifications/BaseNotificationChannel.d.ts +47 -0
- package/dist/cjs/notifications/BaseNotificationChannel.js +112 -0
- package/dist/cjs/notifications/BaseNotificationChannel.js.map +1 -0
- package/dist/cjs/notifications/InMemoryNotificationChannel.d.ts +13 -0
- package/dist/cjs/notifications/InMemoryNotificationChannel.js +37 -0
- package/dist/cjs/notifications/InMemoryNotificationChannel.js.map +1 -0
- package/dist/cjs/notifications/index.d.ts +2 -0
- package/dist/cjs/notifications/index.js +8 -0
- package/dist/cjs/notifications/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types/AgendaBackend.d.ts +61 -0
- package/dist/cjs/types/AgendaBackend.js +3 -0
- package/dist/cjs/types/AgendaBackend.js.map +1 -0
- package/dist/cjs/types/AgendaConfig.d.ts +10 -0
- package/dist/cjs/types/AgendaConfig.js +3 -0
- package/dist/cjs/types/AgendaConfig.js.map +1 -0
- package/dist/cjs/types/AgendaStatus.d.ts +32 -0
- package/dist/cjs/types/AgendaStatus.js +3 -0
- package/dist/cjs/types/AgendaStatus.js.map +1 -0
- package/dist/cjs/types/DbOptions.d.ts +4 -0
- package/dist/cjs/types/DbOptions.js +3 -0
- package/dist/cjs/types/DbOptions.js.map +1 -0
- package/dist/cjs/types/DrainOptions.d.ts +37 -0
- package/dist/cjs/types/DrainOptions.js +3 -0
- package/dist/cjs/types/DrainOptions.js.map +1 -0
- package/dist/cjs/types/JobDefinition.d.ts +49 -0
- package/dist/cjs/types/JobDefinition.js +3 -0
- package/dist/cjs/types/JobDefinition.js.map +1 -0
- package/dist/cjs/types/JobLogger.d.ts +111 -0
- package/dist/cjs/types/JobLogger.js +3 -0
- package/dist/cjs/types/JobLogger.js.map +1 -0
- package/dist/cjs/types/JobParameters.d.ts +106 -0
- package/dist/cjs/types/JobParameters.js +21 -0
- package/dist/cjs/types/JobParameters.js.map +1 -0
- package/dist/cjs/types/JobQuery.d.ts +79 -0
- package/dist/cjs/types/JobQuery.js +36 -0
- package/dist/cjs/types/JobQuery.js.map +1 -0
- package/dist/cjs/types/JobRepository.d.ts +101 -0
- package/dist/cjs/types/JobRepository.js +3 -0
- package/dist/cjs/types/JobRepository.js.map +1 -0
- package/dist/cjs/types/NotificationChannel.d.ts +120 -0
- package/dist/cjs/types/NotificationChannel.js +3 -0
- package/dist/cjs/types/NotificationChannel.js.map +1 -0
- package/dist/cjs/utils/backoff.d.ts +152 -0
- package/dist/cjs/utils/backoff.js +175 -0
- package/dist/cjs/utils/backoff.js.map +1 -0
- package/dist/cjs/utils/dateConstraints.d.ts +48 -0
- package/dist/cjs/utils/dateConstraints.js +127 -0
- package/dist/cjs/utils/dateConstraints.js.map +1 -0
- package/dist/cjs/utils/isValidDate.d.ts +1 -0
- package/dist/cjs/utils/isValidDate.js +8 -0
- package/dist/cjs/utils/isValidDate.js.map +1 -0
- package/dist/cjs/utils/nextRunAt.d.ts +10 -0
- package/dist/cjs/utils/nextRunAt.js +119 -0
- package/dist/cjs/utils/nextRunAt.js.map +1 -0
- package/dist/cjs/utils/priority.d.ts +13 -0
- package/dist/cjs/utils/priority.js +23 -0
- package/dist/cjs/utils/priority.js.map +1 -0
- package/dist/cjs/utils/processEvery.d.ts +1 -0
- package/dist/cjs/utils/processEvery.js +13 -0
- package/dist/cjs/utils/processEvery.js.map +1 -0
- package/dist/cjs/utils/stack.d.ts +1 -0
- package/dist/cjs/utils/stack.js +21 -0
- package/dist/cjs/utils/stack.js.map +1 -0
- package/dist/cjs/version.d.ts +9 -0
- package/dist/cjs/version.js +13 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/decorators/Define.d.ts +33 -0
- package/dist/decorators/Define.js +44 -0
- package/dist/decorators/Define.js.map +1 -0
- package/dist/decorators/Every.d.ts +43 -0
- package/dist/decorators/Every.js +55 -0
- package/dist/decorators/Every.js.map +1 -0
- package/dist/decorators/JobsController.d.ts +43 -0
- package/dist/decorators/JobsController.js +37 -0
- package/dist/decorators/JobsController.js.map +1 -0
- package/dist/decorators/index.d.ts +41 -0
- package/dist/decorators/index.js +46 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/metadata.d.ts +50 -0
- package/dist/decorators/metadata.js +35 -0
- package/dist/decorators/metadata.js.map +1 -0
- package/dist/decorators/register.d.ts +52 -0
- package/dist/decorators/register.js +139 -0
- package/dist/decorators/register.js.map +1 -0
- package/dist/index.d.ts +498 -0
- package/dist/index.js +744 -0
- package/dist/index.js.map +1 -0
- package/dist/notifications/BaseNotificationChannel.d.ts +47 -0
- package/dist/notifications/BaseNotificationChannel.js +108 -0
- package/dist/notifications/BaseNotificationChannel.js.map +1 -0
- package/dist/notifications/InMemoryNotificationChannel.d.ts +13 -0
- package/dist/notifications/InMemoryNotificationChannel.js +33 -0
- package/dist/notifications/InMemoryNotificationChannel.js.map +1 -0
- package/dist/notifications/index.d.ts +2 -0
- package/dist/notifications/index.js +3 -0
- package/dist/notifications/index.js.map +1 -0
- package/dist/types/AgendaBackend.d.ts +61 -0
- package/dist/types/AgendaBackend.js +2 -0
- package/dist/types/AgendaBackend.js.map +1 -0
- package/dist/types/AgendaConfig.d.ts +10 -0
- package/dist/types/AgendaConfig.js +2 -0
- package/dist/types/AgendaConfig.js.map +1 -0
- package/dist/types/AgendaStatus.d.ts +32 -0
- package/dist/types/AgendaStatus.js +2 -0
- package/dist/types/AgendaStatus.js.map +1 -0
- package/dist/types/DbOptions.d.ts +4 -0
- package/dist/types/DbOptions.js +2 -0
- package/dist/types/DbOptions.js.map +1 -0
- package/dist/types/DrainOptions.d.ts +37 -0
- package/dist/types/DrainOptions.js +2 -0
- package/dist/types/DrainOptions.js.map +1 -0
- package/dist/types/JobDefinition.d.ts +49 -0
- package/dist/types/JobDefinition.js +2 -0
- package/dist/types/JobDefinition.js.map +1 -0
- package/dist/types/JobLogger.d.ts +111 -0
- package/dist/types/JobLogger.js +2 -0
- package/dist/types/JobLogger.js.map +1 -0
- package/dist/types/JobParameters.d.ts +106 -0
- package/dist/types/JobParameters.js +17 -0
- package/dist/types/JobParameters.js.map +1 -0
- package/dist/types/JobQuery.d.ts +79 -0
- package/dist/types/JobQuery.js +33 -0
- package/dist/types/JobQuery.js.map +1 -0
- package/dist/types/JobRepository.d.ts +101 -0
- package/dist/types/JobRepository.js +2 -0
- package/dist/types/JobRepository.js.map +1 -0
- package/dist/types/NotificationChannel.d.ts +120 -0
- package/dist/types/NotificationChannel.js +2 -0
- package/dist/types/NotificationChannel.js.map +1 -0
- package/dist/utils/backoff.d.ts +152 -0
- package/dist/utils/backoff.js +167 -0
- package/dist/utils/backoff.js.map +1 -0
- package/dist/utils/dateConstraints.d.ts +48 -0
- package/dist/utils/dateConstraints.js +117 -0
- package/dist/utils/dateConstraints.js.map +1 -0
- package/dist/utils/isValidDate.d.ts +1 -0
- package/dist/utils/isValidDate.js +5 -0
- package/dist/utils/isValidDate.js.map +1 -0
- package/dist/utils/nextRunAt.d.ts +10 -0
- package/dist/utils/nextRunAt.js +110 -0
- package/dist/utils/nextRunAt.js.map +1 -0
- package/dist/utils/priority.d.ts +13 -0
- package/dist/utils/priority.js +20 -0
- package/dist/utils/priority.js.map +1 -0
- package/dist/utils/processEvery.d.ts +1 -0
- package/dist/utils/processEvery.js +7 -0
- package/dist/utils/processEvery.js.map +1 -0
- package/dist/utils/stack.d.ts +1 -0
- package/dist/utils/stack.js +18 -0
- package/dist/utils/stack.js.map +1 -0
- package/dist/version.d.ts +9 -0
- package/dist/version.js +10 -0
- package/dist/version.js.map +1 -0
- package/package.json +79 -0
- package/test/fixtures/forkHelper.js +40 -0
- package/test/fixtures/someJobDefinition.ts +12 -0
- package/test/shared/agenda-test-suite.ts +1876 -0
- package/test/shared/backoff-test-suite.ts +408 -0
- package/test/shared/debounce-test-suite.ts +377 -0
- package/test/shared/full-test-suite.ts +161 -0
- package/test/shared/index.ts +50 -0
- package/test/shared/joblogger-test-suite.ts +305 -0
- package/test/shared/jobprocessor-test-suite.ts +266 -0
- package/test/shared/notification-channel-test-suite.ts +471 -0
- package/test/shared/removeoncomplete-test-suite.ts +228 -0
- package/test/shared/repository-test-suite.ts +708 -0
- package/test/shared/retry-test-suite.ts +174 -0
- package/test/shared/test-utils.ts +100 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Job.js","sourceRoot":"","sources":["../../src/Job.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Job, JobWithId } from './Job.js';
|
|
2
|
+
import type { JobParameters } from './types/JobParameters.js';
|
|
3
|
+
import type { Agenda } from './index.js';
|
|
4
|
+
/**
|
|
5
|
+
* @class
|
|
6
|
+
*/
|
|
7
|
+
export declare class JobProcessingQueue {
|
|
8
|
+
private agenda;
|
|
9
|
+
private _queue;
|
|
10
|
+
constructor(agenda: Agenda);
|
|
11
|
+
get length(): number;
|
|
12
|
+
getQueue(): Job[];
|
|
13
|
+
/**
|
|
14
|
+
* Pops and returns last queue element (next job to be processed) without checking concurrency.
|
|
15
|
+
* @returns {Job} Next Job to be processed
|
|
16
|
+
*/
|
|
17
|
+
pop(): Job | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Inserts job in first queue position
|
|
20
|
+
* @param {Job} job job to add to queue
|
|
21
|
+
* @returns {undefined}
|
|
22
|
+
*/
|
|
23
|
+
remove(job: Job): void;
|
|
24
|
+
/**
|
|
25
|
+
* Inserts job in queue where it will be order from left to right in decreasing
|
|
26
|
+
* order of nextRunAt and priority (in case of same nextRunAt), if all values
|
|
27
|
+
* are even the first jobs to be introduced will have priority
|
|
28
|
+
* @param {Job} job job to add to queue
|
|
29
|
+
* @returns {undefined}
|
|
30
|
+
*/
|
|
31
|
+
insert(job: Job): void;
|
|
32
|
+
/**
|
|
33
|
+
* Returns (does not pop, element remains in queue) first element (always from the right)
|
|
34
|
+
* that can be processed (not blocked by concurrency execution)
|
|
35
|
+
* @param {Object} jobStatus current status of jobs
|
|
36
|
+
* @returns {Job} Next Job to be processed
|
|
37
|
+
*/
|
|
38
|
+
returnNextConcurrencyFreeJob(jobStatus: {
|
|
39
|
+
[jobName: string]: {
|
|
40
|
+
running: number;
|
|
41
|
+
} | undefined;
|
|
42
|
+
}, handledJobs: JobParameters['_id'][]): (JobWithId & {
|
|
43
|
+
attrs: JobParameters & {
|
|
44
|
+
nextRunAt?: Date | null;
|
|
45
|
+
};
|
|
46
|
+
}) | undefined;
|
|
47
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JobProcessingQueue = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* @class
|
|
6
|
+
*/
|
|
7
|
+
class JobProcessingQueue {
|
|
8
|
+
constructor(agenda) {
|
|
9
|
+
this.agenda = agenda;
|
|
10
|
+
this._queue = [];
|
|
11
|
+
}
|
|
12
|
+
get length() {
|
|
13
|
+
return this._queue.length;
|
|
14
|
+
}
|
|
15
|
+
getQueue() {
|
|
16
|
+
return this._queue;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Pops and returns last queue element (next job to be processed) without checking concurrency.
|
|
20
|
+
* @returns {Job} Next Job to be processed
|
|
21
|
+
*/
|
|
22
|
+
pop() {
|
|
23
|
+
return this._queue.pop();
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Inserts job in first queue position
|
|
27
|
+
* @param {Job} job job to add to queue
|
|
28
|
+
* @returns {undefined}
|
|
29
|
+
*/
|
|
30
|
+
/*
|
|
31
|
+
push(job: Job): void {
|
|
32
|
+
this._queue.push(job);
|
|
33
|
+
} */
|
|
34
|
+
remove(job) {
|
|
35
|
+
let removeJobIndex = this._queue.indexOf(job);
|
|
36
|
+
if (removeJobIndex === -1) {
|
|
37
|
+
// lookup by id
|
|
38
|
+
removeJobIndex = this._queue.findIndex(j => j.attrs._id?.toString() === job.attrs._id?.toString());
|
|
39
|
+
}
|
|
40
|
+
if (removeJobIndex === -1) {
|
|
41
|
+
throw new Error(`cannot find job ${job.attrs._id} in processing queue?`);
|
|
42
|
+
}
|
|
43
|
+
this._queue.splice(removeJobIndex, 1);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Inserts job in queue where it will be order from left to right in decreasing
|
|
47
|
+
* order of nextRunAt and priority (in case of same nextRunAt), if all values
|
|
48
|
+
* are even the first jobs to be introduced will have priority
|
|
49
|
+
* @param {Job} job job to add to queue
|
|
50
|
+
* @returns {undefined}
|
|
51
|
+
*/
|
|
52
|
+
insert(job) {
|
|
53
|
+
const matchIndex = this._queue.findIndex(element => {
|
|
54
|
+
if (element.attrs.nextRunAt &&
|
|
55
|
+
job.attrs.nextRunAt &&
|
|
56
|
+
element.attrs.nextRunAt.getTime() <= job.attrs.nextRunAt.getTime()) {
|
|
57
|
+
if (element.attrs.nextRunAt.getTime() === job.attrs.nextRunAt.getTime()) {
|
|
58
|
+
if (element.attrs.priority >= job.attrs.priority) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
});
|
|
68
|
+
if (matchIndex === -1) {
|
|
69
|
+
if (job.attrs.nextRunAt) {
|
|
70
|
+
// No queued element runs earlier (or at same time with higher or
|
|
71
|
+
// equal priority) than this job, so it belongs at the right end
|
|
72
|
+
// of the queue — pop() takes from the right, so it runs first.
|
|
73
|
+
this._queue.push(job);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
// Jobs without a nextRunAt stay at the left end (popped last).
|
|
77
|
+
this._queue.unshift(job);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this._queue.splice(matchIndex, 0, job);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Returns (does not pop, element remains in queue) first element (always from the right)
|
|
86
|
+
* that can be processed (not blocked by concurrency execution)
|
|
87
|
+
* @param {Object} jobStatus current status of jobs
|
|
88
|
+
* @returns {Job} Next Job to be processed
|
|
89
|
+
*/
|
|
90
|
+
returnNextConcurrencyFreeJob(jobStatus, handledJobs) {
|
|
91
|
+
const next = Object.keys(this._queue).reverse().find(i => {
|
|
92
|
+
const def = this.agenda.definitions[this._queue[i].attrs.name];
|
|
93
|
+
const status = jobStatus[this._queue[i].attrs.name];
|
|
94
|
+
// check if we have a definition
|
|
95
|
+
// if there is no status available, we are good to go
|
|
96
|
+
// if there is no max concurrency defined (0), we are also good to go
|
|
97
|
+
// and if concurrency limit is not reached yet (actual running jobs is lower than max concurrency)
|
|
98
|
+
if (def &&
|
|
99
|
+
!handledJobs.includes(this._queue[i].attrs._id) &&
|
|
100
|
+
(!status || !def.concurrency || status.running < def.concurrency)) {
|
|
101
|
+
return true;
|
|
102
|
+
}
|
|
103
|
+
return false;
|
|
104
|
+
});
|
|
105
|
+
return next !== undefined
|
|
106
|
+
? this._queue[next]
|
|
107
|
+
: undefined;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
exports.JobProcessingQueue = JobProcessingQueue;
|
|
111
|
+
//# sourceMappingURL=JobProcessingQueue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JobProcessingQueue.js","sourceRoot":"","sources":["../../src/JobProcessingQueue.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import type { AgendaStatus } from './types/AgendaStatus.js';
|
|
2
|
+
import type { Agenda, JobWithId } from './index.js';
|
|
3
|
+
import type { NotificationChannel } from './types/NotificationChannel.js';
|
|
4
|
+
import type { DrainOptions, DrainResult } from './types/DrainOptions.js';
|
|
5
|
+
/**
|
|
6
|
+
* @class
|
|
7
|
+
* Process methods for jobs
|
|
8
|
+
*/
|
|
9
|
+
export declare class JobProcessor {
|
|
10
|
+
private agenda;
|
|
11
|
+
private maxConcurrency;
|
|
12
|
+
private totalLockLimit;
|
|
13
|
+
private processEvery;
|
|
14
|
+
private jobStatus;
|
|
15
|
+
private localQueueProcessing;
|
|
16
|
+
getStatus(fullDetails?: boolean): Promise<AgendaStatus>;
|
|
17
|
+
private nextScanAt;
|
|
18
|
+
private jobQueue;
|
|
19
|
+
private runningJobs;
|
|
20
|
+
private lockedJobs;
|
|
21
|
+
private isJobQueueFilling;
|
|
22
|
+
private isRunning;
|
|
23
|
+
private processInterval?;
|
|
24
|
+
private notificationChannel?;
|
|
25
|
+
private notificationUnsubscribe?;
|
|
26
|
+
constructor(agenda: Agenda, maxConcurrency: number, totalLockLimit: number, processEvery: number, notificationChannel?: NotificationChannel);
|
|
27
|
+
stop(): JobWithId[];
|
|
28
|
+
/**
|
|
29
|
+
* Waits for all currently running jobs to finish, then stops the processor.
|
|
30
|
+
* Unlike stop(), this method does not immediately return - it waits for graceful completion.
|
|
31
|
+
* @param options - Optional timeout or AbortSignal, or timeout number directly
|
|
32
|
+
* @returns Promise that resolves with drain result when complete, timed out, or aborted
|
|
33
|
+
*/
|
|
34
|
+
drain(options?: number | DrainOptions): Promise<DrainResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Handle incoming job notification - triggers immediate processing
|
|
37
|
+
*/
|
|
38
|
+
private handleNotification;
|
|
39
|
+
process(): Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* Returns true if a job of the specified name can be locked.
|
|
42
|
+
* Considers maximum locked jobs at any time if self._lockLimit is > 0
|
|
43
|
+
* Considers maximum locked jobs of the specified name at any time if jobDefinition.lockLimit is > 0
|
|
44
|
+
* @param {String} name name of job to check if we should lock or not
|
|
45
|
+
* @returns {boolean} whether or not you should lock job
|
|
46
|
+
*/
|
|
47
|
+
shouldLock(name: string): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Internal method that adds a job to be processed to the local queue
|
|
50
|
+
* @param job - Job to enqueue
|
|
51
|
+
*/
|
|
52
|
+
private enqueueJob;
|
|
53
|
+
private findAndLockNextJob;
|
|
54
|
+
/**
|
|
55
|
+
* Internal method used to fill a queue with jobs that can be run
|
|
56
|
+
* @param {String} name fill a queue with specific job name
|
|
57
|
+
* @returns {undefined}
|
|
58
|
+
*/
|
|
59
|
+
private jobQueueFilling;
|
|
60
|
+
/**
|
|
61
|
+
* Internal method that processes any jobs in the local queue (array)
|
|
62
|
+
* handledJobs keeps list of already processed jobs
|
|
63
|
+
* @returns {undefined}
|
|
64
|
+
*/
|
|
65
|
+
private jobProcessing;
|
|
66
|
+
/**
|
|
67
|
+
* Internal method that tries to run a job and if it fails, retries again!
|
|
68
|
+
* @returns {boolean} processed a job or not
|
|
69
|
+
*/
|
|
70
|
+
private runOrRetry;
|
|
71
|
+
private updateStatus;
|
|
72
|
+
}
|