Skip to content

Commit c328aa3

Browse files
committed
Refactor how it polls
1 parent c45179d commit c328aa3

File tree

5 files changed

+112
-74
lines changed

5 files changed

+112
-74
lines changed

.vscode/settings.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
{
2+
"cSpell.enabled": false,
23
"deno.enable": true,
3-
"deno.unstable": true,
4+
"deno.unstable": [
5+
"temporal"
6+
],
47
"files.eol": "\n",
58
"files.insertFinalNewline": true,
69
"files.trimFinalNewlines": true,
@@ -18,8 +21,5 @@
1821
"editor.codeActionsOnSave": {
1922
"source.sortImports": "always"
2023
}
21-
},
22-
"cSpell.words": [
23-
"fedify"
24-
]
24+
}
2525
}

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ Changelog
6666

6767
To be released.
6868

69+
- Polling is now more efficient.
70+
- Renamed `RedisMessageQueueOptions.loopInterval` option to `pollInterval`
71+
option.
72+
6973
### Version 0.2.0
7074

7175
Released on September 26, 2024.

deno.lock

Lines changed: 37 additions & 37 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/mq.test.ts

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,24 @@ Deno.test("RedisMessageQueue", async (t) => {
88
const queueKey = `fedify_test_queue_${crypto.randomUUID()}`;
99
const lockKey = `fedify_test_lock_${crypto.randomUUID()}`;
1010
const mq = new RedisMessageQueue(() => new Redis(), {
11-
loopInterval: { seconds: 1 },
11+
pollInterval: { seconds: 1 },
1212
channelKey,
1313
queueKey,
1414
lockKey,
1515
});
1616
const mq2 = new RedisMessageQueue(() => new Redis(), {
17-
loopInterval: { seconds: 1 },
17+
pollInterval: { seconds: 1 },
1818
channelKey,
1919
queueKey,
2020
lockKey,
2121
});
2222

23-
const messages: string[] = [];
23+
const messages: (string | number)[] = [];
2424
const controller = new AbortController();
25-
const listening = mq.listen((message: string) => {
25+
const listening = mq.listen((message: string | number) => {
2626
messages.push(message);
2727
}, controller);
28-
const listening2 = mq2.listen((message: string) => {
28+
const listening2 = mq2.listen((message: string | number) => {
2929
messages.push(message);
3030
}, controller);
3131

@@ -55,6 +55,18 @@ Deno.test("RedisMessageQueue", async (t) => {
5555
assertGreater(Date.now() - started, 3_000);
5656
});
5757

58+
await t.step("enqueue() [bulk]", async () => {
59+
for (let i = 0; i < 1_000; i++) await mq.enqueue(i);
60+
});
61+
62+
await waitFor(() => messages.length > 1_001, 30_000);
63+
64+
await t.step("listen() [bulk]", () => {
65+
const numbers: Set<number> = new Set();
66+
for (let i = 0; i < 1_000; i++) numbers.add(i);
67+
assertEquals(new Set(messages.slice(2)), numbers);
68+
});
69+
5870
controller.abort();
5971
await listening;
6072
await listening2;

0 commit comments

Comments
 (0)