Skip to content

Commit 71c7a0d

Browse files
committed
In memory queue
1 parent f0b6fb6 commit 71c7a0d

6 files changed

Lines changed: 979 additions & 1 deletion

File tree

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@
7171
"./plugins/ecs-protection-manager": {
7272
"import": "./dist/src/plugins/ecs-protection-manager.js",
7373
"types": "./dist/src/plugins/ecs-protection-manager.d.ts"
74+
},
75+
"./memory": {
76+
"import": "./dist/src/adapters/memory.js",
77+
"types": "./dist/src/adapters/memory.d.ts"
7478
}
7579
},
7680
"peerDependencies": {

src/adapters/memory.ts

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
import { InMemoryQueue as MemoryQueue, type InMemoryQueueOptions } from '../drivers/memory.ts';
2+
3+
// Re-export the main class for convenience
4+
export { InMemoryQueue, type InMemoryQueueOptions } from '../drivers/memory.ts';
5+
6+
/**
7+
* Convenience factory for creating in-memory queues.
8+
*
9+
* @param name Queue name (required)
10+
* @param options Optional configuration
11+
* @returns InMemoryQueue instance
12+
*
13+
* @example
14+
* ```typescript
15+
* import { createMemoryQueue } from '@muniter/queue/memory';
16+
*
17+
* interface MyJobs {
18+
* 'send-email': { to: string; subject: string };
19+
* 'process-image': { url: string; width: number };
20+
* }
21+
*
22+
* const queue = createMemoryQueue<MyJobs>('test-queue', {
23+
* maxJobs: 1000
24+
* });
25+
*
26+
* queue.setHandlers({
27+
* 'send-email': async ({ payload }) => {
28+
* console.log(`Sending email to ${payload.to}`);
29+
* },
30+
* 'process-image': async ({ payload }) => {
31+
* console.log(`Processing image: ${payload.url}`);
32+
* }
33+
* });
34+
*
35+
* await queue.addJob('send-email', {
36+
* payload: { to: 'user@example.com', subject: 'Test' },
37+
* priority: 5,
38+
* delay: 10
39+
* });
40+
*
41+
* await queue.run(true, 1);
42+
* ```
43+
*/
44+
export function createMemoryQueue<T = Record<string, any>>(
45+
name: string,
46+
options: Omit<InMemoryQueueOptions, 'name'> = {}
47+
): MemoryQueue<T> {
48+
return new MemoryQueue<T>({ name, ...options });
49+
}
50+
51+
// Export for convenience
52+
export { MemoryQueue };

0 commit comments

Comments
 (0)