Skip to content

Commit 1d5c67e

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

File tree

7 files changed

+151
-85
lines changed

7 files changed

+151
-85
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.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@
1111
"imports": {
1212
"@deno/dnt": "jsr:@deno/dnt@^0.41.3",
1313
"@fedify/fedify": "jsr:@fedify/fedify@^1.0.0",
14+
"@logtape/logtape": "jsr:@logtape/logtape@^0.6.3",
1415
"@std/assert": "jsr:@std/assert@^0.226.0",
1516
"@std/async": "jsr:@std/async@^0.224.2",
16-
"ioredis": "npm:ioredis@^5.4.0"
17+
"ioredis": "npm:ioredis@^5.4.1"
1718
},
1819
"unstable": [
1920
"temporal"

deno.lock

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

dnt.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ await Deno.writeTextFile(
1212
"@fedify/fedify": metadata.imports["@fedify/fedify"]
1313
.replace(/^jsr:/, "npm:")
1414
.replace(/\+.+$/, ""),
15+
"@logtape/logtape": metadata.imports["@logtape/logtape"]
16+
.replace(/^jsr:/, "npm:")
17+
.replace(/\+.+$/, ""),
1518
},
1619
}),
1720
);

src/mq.test.ts

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { assertEquals, assertGreater } from "@std/assert";
1+
import { assertEquals } from "@std/assert/assert-equals";
2+
import { assertGreater } from "@std/assert/assert-greater";
23
import { delay } from "@std/async/delay";
34
import { Redis } from "ioredis";
45
import { RedisMessageQueue } from "./mq.ts";
@@ -8,24 +9,24 @@ Deno.test("RedisMessageQueue", async (t) => {
89
const queueKey = `fedify_test_queue_${crypto.randomUUID()}`;
910
const lockKey = `fedify_test_lock_${crypto.randomUUID()}`;
1011
const mq = new RedisMessageQueue(() => new Redis(), {
11-
loopInterval: { seconds: 1 },
12+
pollInterval: { seconds: 1 },
1213
channelKey,
1314
queueKey,
1415
lockKey,
1516
});
1617
const mq2 = new RedisMessageQueue(() => new Redis(), {
17-
loopInterval: { seconds: 1 },
18+
pollInterval: { seconds: 1 },
1819
channelKey,
1920
queueKey,
2021
lockKey,
2122
});
2223

23-
const messages: string[] = [];
24+
const messages: (string | number)[] = [];
2425
const controller = new AbortController();
25-
const listening = mq.listen((message: string) => {
26+
const listening = mq.listen((message: string | number) => {
2627
messages.push(message);
2728
}, controller);
28-
const listening2 = mq2.listen((message: string) => {
29+
const listening2 = mq2.listen((message: string | number) => {
2930
messages.push(message);
3031
}, controller);
3132

@@ -55,6 +56,18 @@ Deno.test("RedisMessageQueue", async (t) => {
5556
assertGreater(Date.now() - started, 3_000);
5657
});
5758

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

0 commit comments

Comments
 (0)