@agendajs/mongo-backend 1.0.0-alpha.0 → 2.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/README.md +42 -2
- package/dist/MongoBackend.d.ts +1 -0
- package/dist/MongoBackend.js +1 -0
- package/dist/MongoBackend.js.map +1 -1
- package/dist/MongoChangeStreamNotificationChannel.d.ts +96 -0
- package/dist/MongoChangeStreamNotificationChannel.js +249 -0
- package/dist/MongoChangeStreamNotificationChannel.js.map +1 -0
- package/dist/MongoJobRepository.d.ts +6 -0
- package/dist/MongoJobRepository.js +143 -4
- package/dist/MongoJobRepository.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -96,7 +96,41 @@ const agenda = new Agenda({
|
|
|
96
96
|
|
|
97
97
|
## Real-Time Notifications
|
|
98
98
|
|
|
99
|
-
MongoBackend provides storage only and uses polling to check for new jobs. For real-time job processing across distributed systems,
|
|
99
|
+
MongoBackend provides storage only and uses polling to check for new jobs. For real-time job processing across distributed systems, you have several options:
|
|
100
|
+
|
|
101
|
+
### Option 1: MongoDB Change Streams (Native)
|
|
102
|
+
|
|
103
|
+
If your MongoDB deployment is a replica set (even a single-node replica set works), you can use `MongoChangeStreamNotificationChannel` for native real-time notifications without any external dependencies:
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
import { Agenda } from 'agenda';
|
|
107
|
+
import { MongoBackend, MongoChangeStreamNotificationChannel } from '@agendajs/mongo-backend';
|
|
108
|
+
|
|
109
|
+
const agenda = new Agenda({
|
|
110
|
+
backend: new MongoBackend({ mongo: db }),
|
|
111
|
+
notificationChannel: new MongoChangeStreamNotificationChannel({ db })
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// Jobs are processed immediately when created (no polling delay)
|
|
115
|
+
await agenda.start();
|
|
116
|
+
await agenda.now('myJob'); // Triggers instant processing
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
**Requirements:**
|
|
120
|
+
- MongoDB replica set (single-node replica sets work fine)
|
|
121
|
+
- WiredTiger storage engine (default since MongoDB 3.2)
|
|
122
|
+
|
|
123
|
+
**Configuration options:**
|
|
124
|
+
```typescript
|
|
125
|
+
const channel = new MongoChangeStreamNotificationChannel({
|
|
126
|
+
db: mongoDb, // Required: MongoDB database instance
|
|
127
|
+
collection: 'agendaJobs', // Optional: collection name (default: 'agendaJobs')
|
|
128
|
+
resumeToken: savedToken, // Optional: resume from specific point
|
|
129
|
+
fullDocument: true // Optional: include full document on updates (default: true)
|
|
130
|
+
});
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Option 2: In-Memory (Single Process)
|
|
100
134
|
|
|
101
135
|
```typescript
|
|
102
136
|
import { Agenda, InMemoryNotificationChannel } from 'agenda';
|
|
@@ -107,10 +141,16 @@ const agenda = new Agenda({
|
|
|
107
141
|
backend: new MongoBackend({ mongo: db }),
|
|
108
142
|
notificationChannel: new InMemoryNotificationChannel()
|
|
109
143
|
});
|
|
144
|
+
```
|
|
110
145
|
|
|
111
|
-
|
|
146
|
+
### Option 3: Redis Pub/Sub (Multi-Process)
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
import { Agenda } from 'agenda';
|
|
150
|
+
import { MongoBackend } from '@agendajs/mongo-backend';
|
|
112
151
|
import { RedisBackend } from '@agendajs/redis-backend';
|
|
113
152
|
|
|
153
|
+
// For production: use Redis for notifications
|
|
114
154
|
const redisBackend = new RedisBackend({ connectionString: 'redis://localhost:6379' });
|
|
115
155
|
const agenda = new Agenda({
|
|
116
156
|
backend: new MongoBackend({ mongo: db }),
|
package/dist/MongoBackend.d.ts
CHANGED
package/dist/MongoBackend.js
CHANGED
package/dist/MongoBackend.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoBackend.js","sourceRoot":"","sources":["../src/MongoBackend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"MongoBackend.js","sourceRoot":"","sources":["../src/MongoBackend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,YAAY;IAaJ;IAZX,IAAI,GAAG,SAAS,CAAC;IAElB,WAAW,CAAqB;IAChC,eAAe,CAAU;IAEjC;;;;OAIG;IACM,mBAAmB,GAAoC,SAAS,CAAC;IAE1E,YAAoB,MAA0B;QAA1B,WAAM,GAAN,MAAM,CAAoB;QAC7C,6DAA6D;QAC7D,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,kBAAkB,CAAC;YACzC,GAAG,CAAC,OAAO,IAAI,MAAM;gBACpB,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE;gBAChE,CAAC,CAAC;oBACA,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;iBACvF,CAAC;YACJ,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;SACjB,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,UAAU;QACb,OAAO,IAAI,CAAC,WAAW,CAAC;IACzB,CAAC;IAED;;;OAGG;IACH,IAAI,cAAc;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACZ,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU;QACf,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC;CACD"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import type { Db, ResumeToken } from 'mongodb';
|
|
2
|
+
import type { JobNotification, NotificationChannelConfig } from 'agenda';
|
|
3
|
+
import { BaseNotificationChannel } from 'agenda';
|
|
4
|
+
/**
|
|
5
|
+
* Configuration for MongoChangeStreamNotificationChannel
|
|
6
|
+
*/
|
|
7
|
+
export interface MongoChangeStreamNotificationChannelConfig extends NotificationChannelConfig {
|
|
8
|
+
/**
|
|
9
|
+
* MongoDB database instance.
|
|
10
|
+
* Required - must be connected to a replica set.
|
|
11
|
+
*/
|
|
12
|
+
db?: Db;
|
|
13
|
+
/**
|
|
14
|
+
* Collection name to watch (default: 'agendaJobs')
|
|
15
|
+
*/
|
|
16
|
+
collection?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Resume token to resume watching from a specific point.
|
|
19
|
+
* Useful for recovering from disconnections.
|
|
20
|
+
*/
|
|
21
|
+
resumeToken?: ResumeToken;
|
|
22
|
+
/**
|
|
23
|
+
* Whether to use fullDocument: 'updateLookup' for update events.
|
|
24
|
+
* This fetches the full document on updates but adds latency.
|
|
25
|
+
* Default: true (required for proper notification data)
|
|
26
|
+
*/
|
|
27
|
+
fullDocument?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* MongoDB Change Stream notification channel.
|
|
31
|
+
*
|
|
32
|
+
* Uses MongoDB Change Streams to watch for job changes in real-time.
|
|
33
|
+
* This eliminates the need for polling and provides instant notifications
|
|
34
|
+
* when jobs are created or updated.
|
|
35
|
+
*
|
|
36
|
+
* **Requirements:**
|
|
37
|
+
* - MongoDB must be deployed as a replica set (even single-node replica sets work)
|
|
38
|
+
* - WiredTiger storage engine (default since MongoDB 3.2)
|
|
39
|
+
*
|
|
40
|
+
* **How it works:**
|
|
41
|
+
* - Watches the jobs collection for insert/update/replace operations
|
|
42
|
+
* - When a job with `nextRunAt` is modified, handlers are notified
|
|
43
|
+
* - The `publish()` method is a no-op since Change Streams automatically
|
|
44
|
+
* detect job changes from any source
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* import { Agenda } from 'agenda';
|
|
49
|
+
* import { MongoBackend, MongoChangeStreamNotificationChannel } from '@agendajs/mongo-backend';
|
|
50
|
+
*
|
|
51
|
+
* const backend = new MongoBackend({ mongo: db });
|
|
52
|
+
* const channel = new MongoChangeStreamNotificationChannel({ db });
|
|
53
|
+
*
|
|
54
|
+
* const agenda = new Agenda({
|
|
55
|
+
* backend,
|
|
56
|
+
* notificationChannel: channel
|
|
57
|
+
* });
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare class MongoChangeStreamNotificationChannel extends BaseNotificationChannel {
|
|
61
|
+
private db?;
|
|
62
|
+
private collectionName;
|
|
63
|
+
private collection?;
|
|
64
|
+
private changeStream?;
|
|
65
|
+
private resumeToken?;
|
|
66
|
+
private useFullDocument;
|
|
67
|
+
constructor(config?: MongoChangeStreamNotificationChannelConfig);
|
|
68
|
+
/**
|
|
69
|
+
* Set the MongoDB database instance.
|
|
70
|
+
* Used when the channel is created before the database connection.
|
|
71
|
+
*/
|
|
72
|
+
setDb(db: Db): void;
|
|
73
|
+
/**
|
|
74
|
+
* Get the last resume token for reconnection purposes.
|
|
75
|
+
* Store this token to resume watching from the same point after restart.
|
|
76
|
+
*/
|
|
77
|
+
getResumeToken(): ResumeToken | undefined;
|
|
78
|
+
connect(): Promise<void>;
|
|
79
|
+
private handleChange;
|
|
80
|
+
private extractFullDocument;
|
|
81
|
+
private buildNotification;
|
|
82
|
+
private handleConnectionLoss;
|
|
83
|
+
disconnect(): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Publish a job notification.
|
|
86
|
+
*
|
|
87
|
+
* **Note:** This method is a no-op for Change Stream notifications.
|
|
88
|
+
* Change Streams automatically detect job changes in the database,
|
|
89
|
+
* so explicit publishing is not required. This method exists only
|
|
90
|
+
* to satisfy the NotificationChannel interface.
|
|
91
|
+
*
|
|
92
|
+
* All job saves to the watched collection will automatically trigger
|
|
93
|
+
* notifications to all subscribers.
|
|
94
|
+
*/
|
|
95
|
+
publish(_notification: JobNotification): Promise<void>;
|
|
96
|
+
}
|
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
import { BaseNotificationChannel, toJobId } from 'agenda';
|
|
3
|
+
const log = debug('agenda:mongo:changestream');
|
|
4
|
+
/**
|
|
5
|
+
* MongoDB Change Stream notification channel.
|
|
6
|
+
*
|
|
7
|
+
* Uses MongoDB Change Streams to watch for job changes in real-time.
|
|
8
|
+
* This eliminates the need for polling and provides instant notifications
|
|
9
|
+
* when jobs are created or updated.
|
|
10
|
+
*
|
|
11
|
+
* **Requirements:**
|
|
12
|
+
* - MongoDB must be deployed as a replica set (even single-node replica sets work)
|
|
13
|
+
* - WiredTiger storage engine (default since MongoDB 3.2)
|
|
14
|
+
*
|
|
15
|
+
* **How it works:**
|
|
16
|
+
* - Watches the jobs collection for insert/update/replace operations
|
|
17
|
+
* - When a job with `nextRunAt` is modified, handlers are notified
|
|
18
|
+
* - The `publish()` method is a no-op since Change Streams automatically
|
|
19
|
+
* detect job changes from any source
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* import { Agenda } from 'agenda';
|
|
24
|
+
* import { MongoBackend, MongoChangeStreamNotificationChannel } from '@agendajs/mongo-backend';
|
|
25
|
+
*
|
|
26
|
+
* const backend = new MongoBackend({ mongo: db });
|
|
27
|
+
* const channel = new MongoChangeStreamNotificationChannel({ db });
|
|
28
|
+
*
|
|
29
|
+
* const agenda = new Agenda({
|
|
30
|
+
* backend,
|
|
31
|
+
* notificationChannel: channel
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export class MongoChangeStreamNotificationChannel extends BaseNotificationChannel {
|
|
36
|
+
db;
|
|
37
|
+
collectionName;
|
|
38
|
+
collection;
|
|
39
|
+
changeStream;
|
|
40
|
+
resumeToken;
|
|
41
|
+
useFullDocument;
|
|
42
|
+
constructor(config = {}) {
|
|
43
|
+
super(config);
|
|
44
|
+
this.db = config.db;
|
|
45
|
+
this.collectionName = config.collection ?? 'agendaJobs';
|
|
46
|
+
this.resumeToken = config.resumeToken;
|
|
47
|
+
this.useFullDocument = config.fullDocument ?? true;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Set the MongoDB database instance.
|
|
51
|
+
* Used when the channel is created before the database connection.
|
|
52
|
+
*/
|
|
53
|
+
setDb(db) {
|
|
54
|
+
if (this._state === 'connected') {
|
|
55
|
+
throw new Error('Cannot set database while channel is connected');
|
|
56
|
+
}
|
|
57
|
+
this.db = db;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Get the last resume token for reconnection purposes.
|
|
61
|
+
* Store this token to resume watching from the same point after restart.
|
|
62
|
+
*/
|
|
63
|
+
getResumeToken() {
|
|
64
|
+
return this.resumeToken;
|
|
65
|
+
}
|
|
66
|
+
async connect() {
|
|
67
|
+
log('connecting change stream notification channel (current state=%s)', this._state);
|
|
68
|
+
this.clearReconnect();
|
|
69
|
+
if (!this.db) {
|
|
70
|
+
throw new Error('MongoChangeStreamNotificationChannel requires a MongoDB database instance. ' +
|
|
71
|
+
'Provide it via config.db or call setDb() before connecting.');
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
this.setState('connecting');
|
|
75
|
+
log('getting collection: %s', this.collectionName);
|
|
76
|
+
this.collection = this.db.collection(this.collectionName);
|
|
77
|
+
// Build the aggregation pipeline to filter relevant changes
|
|
78
|
+
const pipeline = [
|
|
79
|
+
{
|
|
80
|
+
$match: {
|
|
81
|
+
// Watch for job inserts, updates, and replacements
|
|
82
|
+
operationType: { $in: ['insert', 'update', 'replace'] }
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
];
|
|
86
|
+
// Change stream options
|
|
87
|
+
const options = {};
|
|
88
|
+
// Use fullDocument lookup to get the complete document on updates
|
|
89
|
+
// This is required to get job data on update events
|
|
90
|
+
if (this.useFullDocument) {
|
|
91
|
+
options.fullDocument = 'updateLookup';
|
|
92
|
+
}
|
|
93
|
+
// Resume from a specific token if provided
|
|
94
|
+
if (this.resumeToken) {
|
|
95
|
+
options.resumeAfter = this.resumeToken;
|
|
96
|
+
log('resuming from token: %O', this.resumeToken);
|
|
97
|
+
}
|
|
98
|
+
log('creating change stream with options: %O', options);
|
|
99
|
+
// Create the change stream
|
|
100
|
+
this.changeStream = this.collection.watch(pipeline, options);
|
|
101
|
+
// Handle change events
|
|
102
|
+
this.changeStream.on('change', (change) => {
|
|
103
|
+
this.handleChange(change);
|
|
104
|
+
});
|
|
105
|
+
// Handle errors
|
|
106
|
+
this.changeStream.on('error', (error) => {
|
|
107
|
+
log('change stream error: %O', error);
|
|
108
|
+
this.emit('error', error);
|
|
109
|
+
if (this._state === 'connected') {
|
|
110
|
+
this.handleConnectionLoss();
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
// Handle stream close - only treat as connection loss if we didn't initiate it
|
|
114
|
+
this.changeStream.on('close', () => {
|
|
115
|
+
log('change stream closed (state=%s)', this._state);
|
|
116
|
+
// Only handle as connection loss if we're still in connected state
|
|
117
|
+
// (not if we're disconnecting or already disconnected)
|
|
118
|
+
if (this._state === 'connected') {
|
|
119
|
+
this.handleConnectionLoss();
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
log('change stream connected, watching collection: %s', this.collectionName);
|
|
123
|
+
this.setState('connected');
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
log('connection failed: %O', error);
|
|
127
|
+
this.emit('error', error);
|
|
128
|
+
this.scheduleReconnect();
|
|
129
|
+
throw error;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
handleChange(change) {
|
|
133
|
+
try {
|
|
134
|
+
log('received change event: operationType=%s', change.operationType);
|
|
135
|
+
// Store resume token for recovery
|
|
136
|
+
if (change._id) {
|
|
137
|
+
this.resumeToken = change._id;
|
|
138
|
+
}
|
|
139
|
+
// Get the full document based on operation type
|
|
140
|
+
const fullDocument = this.extractFullDocument(change);
|
|
141
|
+
if (!fullDocument) {
|
|
142
|
+
log('change event without full document (operationType=%s), skipping', change.operationType);
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
log('extracted fullDocument: name=%s, nextRunAt=%s, disabled=%s', fullDocument.name, fullDocument.nextRunAt, fullDocument.disabled);
|
|
146
|
+
// Only notify for jobs that have a nextRunAt (scheduled to run)
|
|
147
|
+
if (!fullDocument.nextRunAt) {
|
|
148
|
+
log('job has no nextRunAt, skipping notification');
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
// Skip disabled jobs
|
|
152
|
+
if (fullDocument.disabled) {
|
|
153
|
+
log('job is disabled, skipping notification');
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
// Build notification from the document
|
|
157
|
+
const notification = this.buildNotification(fullDocument);
|
|
158
|
+
log('received change notification: %O', notification);
|
|
159
|
+
this.notifyHandlers(notification).catch((err) => {
|
|
160
|
+
this.emit('error', err);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
log('error processing change event: %O', error);
|
|
165
|
+
this.emit('error', error);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
extractFullDocument(change) {
|
|
169
|
+
// Handle insert events
|
|
170
|
+
if (change.operationType === 'insert') {
|
|
171
|
+
const insertChange = change;
|
|
172
|
+
return insertChange.fullDocument;
|
|
173
|
+
}
|
|
174
|
+
// Handle update events (requires fullDocument: 'updateLookup' option)
|
|
175
|
+
if (change.operationType === 'update') {
|
|
176
|
+
const updateChange = change;
|
|
177
|
+
if (updateChange.fullDocument) {
|
|
178
|
+
return updateChange.fullDocument;
|
|
179
|
+
}
|
|
180
|
+
log('update event missing fullDocument - ensure fullDocument option is set');
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
// Handle replace events
|
|
184
|
+
if (change.operationType === 'replace') {
|
|
185
|
+
const replaceChange = change;
|
|
186
|
+
return replaceChange.fullDocument;
|
|
187
|
+
}
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
buildNotification(doc) {
|
|
191
|
+
return {
|
|
192
|
+
jobId: toJobId(String(doc._id)),
|
|
193
|
+
jobName: doc.name,
|
|
194
|
+
nextRunAt: doc.nextRunAt ? new Date(doc.nextRunAt) : null,
|
|
195
|
+
priority: doc.priority || 0,
|
|
196
|
+
timestamp: new Date(),
|
|
197
|
+
source: 'changestream'
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
handleConnectionLoss() {
|
|
201
|
+
log('handling connection loss');
|
|
202
|
+
if (this.changeStream) {
|
|
203
|
+
try {
|
|
204
|
+
this.changeStream.close().catch(() => {
|
|
205
|
+
// Ignore close errors
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
// Ignore close errors
|
|
210
|
+
}
|
|
211
|
+
this.changeStream = undefined;
|
|
212
|
+
}
|
|
213
|
+
this.scheduleReconnect();
|
|
214
|
+
}
|
|
215
|
+
async disconnect() {
|
|
216
|
+
log('disconnecting change stream notification channel');
|
|
217
|
+
this.clearReconnect();
|
|
218
|
+
// Set state first to prevent close event from triggering reconnection
|
|
219
|
+
this.setState('disconnected');
|
|
220
|
+
if (this.changeStream) {
|
|
221
|
+
try {
|
|
222
|
+
await this.changeStream.close();
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
// Ignore close errors
|
|
226
|
+
}
|
|
227
|
+
this.changeStream = undefined;
|
|
228
|
+
}
|
|
229
|
+
this.handlers.clear();
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Publish a job notification.
|
|
233
|
+
*
|
|
234
|
+
* **Note:** This method is a no-op for Change Stream notifications.
|
|
235
|
+
* Change Streams automatically detect job changes in the database,
|
|
236
|
+
* so explicit publishing is not required. This method exists only
|
|
237
|
+
* to satisfy the NotificationChannel interface.
|
|
238
|
+
*
|
|
239
|
+
* All job saves to the watched collection will automatically trigger
|
|
240
|
+
* notifications to all subscribers.
|
|
241
|
+
*/
|
|
242
|
+
async publish(_notification) {
|
|
243
|
+
// No-op: Change Streams automatically detect database changes.
|
|
244
|
+
// When a job is saved to MongoDB, the change stream will pick it up
|
|
245
|
+
// and notify all handlers automatically.
|
|
246
|
+
log('publish called (no-op for change stream - changes detected automatically)');
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=MongoChangeStreamNotificationChannel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MongoChangeStreamNotificationChannel.js","sourceRoot":"","sources":["../src/MongoChangeStreamNotificationChannel.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,12 @@ export declare class MongoJobRepository implements JobRepository {
|
|
|
44
44
|
getDistinctJobNames(): Promise<string[]>;
|
|
45
45
|
getQueueSize(): Promise<number>;
|
|
46
46
|
removeJobs(options: RemoveJobsOptions): Promise<number>;
|
|
47
|
+
/**
|
|
48
|
+
* Build a MongoDB filter from RemoveJobsOptions
|
|
49
|
+
*/
|
|
50
|
+
private buildFilterFromOptions;
|
|
51
|
+
disableJobs(options: RemoveJobsOptions): Promise<number>;
|
|
52
|
+
enableJobs(options: RemoveJobsOptions): Promise<number>;
|
|
47
53
|
unlockJob(job: JobParameters): Promise<void>;
|
|
48
54
|
/**
|
|
49
55
|
* Internal method to unlock jobs so that they can be re-run
|
|
@@ -32,7 +32,8 @@ function computeJobObj(job) {
|
|
|
32
32
|
unique: job.unique,
|
|
33
33
|
uniqueOpts: job.uniqueOpts,
|
|
34
34
|
lastModifiedBy: job.lastModifiedBy,
|
|
35
|
-
fork: job.fork
|
|
35
|
+
fork: job.fork,
|
|
36
|
+
debounceStartedAt: job.debounceStartedAt
|
|
36
37
|
};
|
|
37
38
|
}
|
|
38
39
|
/**
|
|
@@ -149,6 +150,7 @@ export class MongoJobRepository {
|
|
|
149
150
|
// Fetch jobs
|
|
150
151
|
const allJobs = await this.collection.find(query).sort(this.toMongoSort(sort)).toArray();
|
|
151
152
|
// Compute states and filter by state if specified
|
|
153
|
+
// Special handling for 'paused' state which is based on disabled field
|
|
152
154
|
let jobsWithState = allJobs
|
|
153
155
|
.map(job => {
|
|
154
156
|
const jobOb = computeJobObj(job);
|
|
@@ -157,7 +159,13 @@ export class MongoJobRepository {
|
|
|
157
159
|
state: computeJobState(jobOb, now)
|
|
158
160
|
};
|
|
159
161
|
})
|
|
160
|
-
.filter(job =>
|
|
162
|
+
.filter(job => {
|
|
163
|
+
if (!state)
|
|
164
|
+
return true;
|
|
165
|
+
if (state === 'paused')
|
|
166
|
+
return job.disabled === true;
|
|
167
|
+
return job.state === state;
|
|
168
|
+
});
|
|
161
169
|
// Apply pagination after state filtering
|
|
162
170
|
const total = jobsWithState.length;
|
|
163
171
|
if (limit > 0) {
|
|
@@ -185,11 +193,15 @@ export class MongoJobRepository {
|
|
|
185
193
|
queued: 0,
|
|
186
194
|
completed: 0,
|
|
187
195
|
failed: 0,
|
|
188
|
-
repeating: 0
|
|
196
|
+
repeating: 0,
|
|
197
|
+
paused: 0
|
|
189
198
|
};
|
|
190
199
|
for (const job of jobs) {
|
|
191
200
|
const state = computeJobState(job, now);
|
|
192
201
|
overview[state]++;
|
|
202
|
+
if (job.disabled === true) {
|
|
203
|
+
overview.paused++;
|
|
204
|
+
}
|
|
193
205
|
}
|
|
194
206
|
return overview;
|
|
195
207
|
}));
|
|
@@ -250,6 +262,69 @@ export class MongoJobRepository {
|
|
|
250
262
|
const result = await this.collection.deleteMany(query);
|
|
251
263
|
return result.deletedCount;
|
|
252
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* Build a MongoDB filter from RemoveJobsOptions
|
|
267
|
+
*/
|
|
268
|
+
buildFilterFromOptions(options) {
|
|
269
|
+
const query = {};
|
|
270
|
+
if (options.id) {
|
|
271
|
+
const idStr = String(options.id);
|
|
272
|
+
try {
|
|
273
|
+
query._id = new ObjectId(idStr);
|
|
274
|
+
}
|
|
275
|
+
catch {
|
|
276
|
+
return null;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
else if (options.ids && Array.isArray(options.ids) && options.ids.length > 0) {
|
|
280
|
+
try {
|
|
281
|
+
query._id = { $in: options.ids.map(id => new ObjectId(String(id))) };
|
|
282
|
+
}
|
|
283
|
+
catch {
|
|
284
|
+
return null;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
// Validate name is a string to prevent query operator injection
|
|
288
|
+
if (options.name && typeof options.name === 'string') {
|
|
289
|
+
query.name = options.name;
|
|
290
|
+
}
|
|
291
|
+
else if (options.names && Array.isArray(options.names) && options.names.length > 0) {
|
|
292
|
+
const validNames = options.names.filter((n) => typeof n === 'string');
|
|
293
|
+
if (validNames.length > 0) {
|
|
294
|
+
query.name = { $in: validNames };
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
else if (options.notNames && Array.isArray(options.notNames) && options.notNames.length > 0) {
|
|
298
|
+
const validNotNames = options.notNames.filter((n) => typeof n === 'string');
|
|
299
|
+
if (validNotNames.length > 0) {
|
|
300
|
+
query.name = { $nin: validNotNames };
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
if (options.data !== undefined) {
|
|
304
|
+
query.data = options.data;
|
|
305
|
+
}
|
|
306
|
+
// If no criteria provided, return null to indicate no operation
|
|
307
|
+
if (Object.keys(query).length === 0) {
|
|
308
|
+
return null;
|
|
309
|
+
}
|
|
310
|
+
return query;
|
|
311
|
+
}
|
|
312
|
+
async disableJobs(options) {
|
|
313
|
+
const query = this.buildFilterFromOptions(options);
|
|
314
|
+
if (!query) {
|
|
315
|
+
return 0;
|
|
316
|
+
}
|
|
317
|
+
const result = await this.collection.updateMany(query, { $set: { disabled: true } });
|
|
318
|
+
return result.modifiedCount;
|
|
319
|
+
}
|
|
320
|
+
async enableJobs(options) {
|
|
321
|
+
const query = this.buildFilterFromOptions(options);
|
|
322
|
+
if (!query) {
|
|
323
|
+
return 0;
|
|
324
|
+
}
|
|
325
|
+
const result = await this.collection.updateMany(query, { $set: { disabled: false } });
|
|
326
|
+
return result.modifiedCount;
|
|
327
|
+
}
|
|
253
328
|
async unlockJob(job) {
|
|
254
329
|
if (!job._id)
|
|
255
330
|
return;
|
|
@@ -464,9 +539,73 @@ export class MongoJobRepository {
|
|
|
464
539
|
// Upsert based on the 'unique' query object
|
|
465
540
|
const query = { ...unique };
|
|
466
541
|
query.name = props.name;
|
|
467
|
-
|
|
542
|
+
const debounce = uniqueOpts?.debounce;
|
|
543
|
+
if (uniqueOpts?.insertOnly && !debounce) {
|
|
468
544
|
update = { $setOnInsert: propsWithModifier };
|
|
469
545
|
}
|
|
546
|
+
// Handle debounce logic
|
|
547
|
+
if (debounce) {
|
|
548
|
+
log('handling debounce with delay: %dms, strategy: %s', debounce.delay, debounce.strategy || 'trailing');
|
|
549
|
+
// First, check if a matching job already exists
|
|
550
|
+
const existingJob = await this.collection.findOne(query);
|
|
551
|
+
if (existingJob) {
|
|
552
|
+
// Job exists - apply debounce logic
|
|
553
|
+
const debounceStartedAt = existingJob.debounceStartedAt ?? now;
|
|
554
|
+
const timeSinceStart = now.getTime() - debounceStartedAt.getTime();
|
|
555
|
+
if (debounce.strategy === 'leading') {
|
|
556
|
+
// Leading: keep original nextRunAt, just update data
|
|
557
|
+
// Don't change nextRunAt - the job runs on its original schedule
|
|
558
|
+
log('leading debounce: keeping original nextRunAt, updating data only');
|
|
559
|
+
const leadingUpdate = {
|
|
560
|
+
$set: {
|
|
561
|
+
...propsWithModifier,
|
|
562
|
+
nextRunAt: existingJob.nextRunAt, // Preserve original
|
|
563
|
+
debounceStartedAt: debounceStartedAt
|
|
564
|
+
}
|
|
565
|
+
};
|
|
566
|
+
const result = await this.collection.findOneAndUpdate(query, leadingUpdate, {
|
|
567
|
+
returnDocument: 'after'
|
|
568
|
+
});
|
|
569
|
+
assert(result, 'findOneAndUpdate should return a document');
|
|
570
|
+
return computeJobObj(result);
|
|
571
|
+
}
|
|
572
|
+
// Trailing (default): push nextRunAt forward
|
|
573
|
+
let newNextRunAt;
|
|
574
|
+
// Check maxWait - force execution if exceeded
|
|
575
|
+
if (debounce.maxWait && timeSinceStart >= debounce.maxWait) {
|
|
576
|
+
log('maxWait exceeded (%dms >= %dms), forcing immediate execution', timeSinceStart, debounce.maxWait);
|
|
577
|
+
newNextRunAt = now;
|
|
578
|
+
// Reset debounceStartedAt for the next cycle
|
|
579
|
+
propsWithModifier.debounceStartedAt = undefined;
|
|
580
|
+
}
|
|
581
|
+
else {
|
|
582
|
+
// Normal debounce: schedule for delay ms from now
|
|
583
|
+
newNextRunAt = new Date(now.getTime() + debounce.delay);
|
|
584
|
+
propsWithModifier.debounceStartedAt = debounceStartedAt;
|
|
585
|
+
log('trailing debounce: rescheduling to %s', newNextRunAt.toISOString());
|
|
586
|
+
}
|
|
587
|
+
propsWithModifier.nextRunAt = newNextRunAt;
|
|
588
|
+
update = { $set: propsWithModifier };
|
|
589
|
+
const result = await this.collection.findOneAndUpdate(query, update, {
|
|
590
|
+
returnDocument: 'after'
|
|
591
|
+
});
|
|
592
|
+
assert(result, 'findOneAndUpdate should return a document');
|
|
593
|
+
return computeJobObj(result);
|
|
594
|
+
}
|
|
595
|
+
// No existing job - this is a new job
|
|
596
|
+
if (debounce.strategy === 'leading') {
|
|
597
|
+
// Leading: execute immediately (keep nextRunAt as-is)
|
|
598
|
+
log('leading debounce: new job, executing immediately');
|
|
599
|
+
propsWithModifier.debounceStartedAt = now;
|
|
600
|
+
}
|
|
601
|
+
else {
|
|
602
|
+
// Trailing: schedule after delay
|
|
603
|
+
const newNextRunAt = new Date(now.getTime() + debounce.delay);
|
|
604
|
+
propsWithModifier.nextRunAt = newNextRunAt;
|
|
605
|
+
propsWithModifier.debounceStartedAt = now;
|
|
606
|
+
log('trailing debounce: new job, scheduling for %s', newNextRunAt.toISOString());
|
|
607
|
+
}
|
|
608
|
+
}
|
|
470
609
|
log('calling findOneAndUpdate() with unique object as query: \n%O', query);
|
|
471
610
|
const result = await this.collection.findOneAndUpdate(query, update, {
|
|
472
611
|
upsert: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MongoJobRepository.js","sourceRoot":"","sources":["../src/MongoJobRepository.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MongoJobRepository.js","sourceRoot":"","sources":["../src/MongoJobRepository.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -31,6 +31,8 @@
|
|
|
31
31
|
*/
|
|
32
32
|
export { MongoBackend } from './MongoBackend.js';
|
|
33
33
|
export { MongoJobRepository } from './MongoJobRepository.js';
|
|
34
|
+
export { MongoChangeStreamNotificationChannel } from './MongoChangeStreamNotificationChannel.js';
|
|
34
35
|
export type { MongoBackendConfig, MongoJobRepositoryConfig, MongoDbConfig } from './types.js';
|
|
36
|
+
export type { MongoChangeStreamNotificationChannelConfig } from './MongoChangeStreamNotificationChannel.js';
|
|
35
37
|
export type { Db, MongoClientOptions } from 'mongodb';
|
|
36
38
|
export { MongoClient, ObjectId } from 'mongodb';
|
package/dist/index.js
CHANGED
|
@@ -31,5 +31,6 @@
|
|
|
31
31
|
*/
|
|
32
32
|
export { MongoBackend } from './MongoBackend.js';
|
|
33
33
|
export { MongoJobRepository } from './MongoJobRepository.js';
|
|
34
|
+
export { MongoChangeStreamNotificationChannel } from './MongoChangeStreamNotificationChannel.js';
|
|
34
35
|
export { MongoClient, ObjectId } from 'mongodb';
|
|
35
36
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAC;AAOjG,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agendajs/mongo-backend",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "MongoDB backend for Agenda job scheduler",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"mongodb": "^6.12.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
47
|
-
"agenda": "6.
|
|
47
|
+
"agenda": "6.1.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
50
|
"@types/debug": "^4.1.12",
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
"mongodb-memory-server": "^10.0.0",
|
|
54
54
|
"tsx": "^4.21.0",
|
|
55
55
|
"vitest": "^3.1.0",
|
|
56
|
-
"agenda": "6.
|
|
56
|
+
"agenda": "6.1.0"
|
|
57
57
|
},
|
|
58
58
|
"scripts": {
|
|
59
59
|
"build": "tsc -b",
|