Skip to content

Commit

Permalink
Poll many messages at once
Browse files Browse the repository at this point in the history
  • Loading branch information
dahlia committed Sep 22, 2024
1 parent bb96183 commit d523946
Showing 1 changed file with 12 additions and 8 deletions.
20 changes: 12 additions & 8 deletions src/mq.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ export class PostgresMessageQueue implements MessageQueue {
await this.initialize();
const { signal } = options;
const poll = async () => {
if (signal?.aborted) return;
const query = this.#sql`
while (!signal?.aborted) {
const query = this.#sql`
DELETE FROM ${this.#sql(this.#tableName)}
WHERE id = (
SELECT id
Expand All @@ -110,13 +110,17 @@ export class PostgresMessageQueue implements MessageQueue {
)
RETURNING message;
`.execute();
const cancel = query.cancel.bind(query);
signal?.addEventListener("abort", cancel);
for (const message of await query) {
if (signal?.aborted) return;
await handler(JSON.parse(message.message));
const cancel = query.cancel.bind(query);
signal?.addEventListener("abort", cancel);
let i = 0;
for (const message of await query) {
if (signal?.aborted) return;
await handler(JSON.parse(message.message));
i++;
}
signal?.removeEventListener("abort", cancel);
if (i < 1) break;
}
signal?.removeEventListener("abort", cancel);
};
const timeouts = new Set<ReturnType<typeof setTimeout>>();
const listen = await this.#sql.listen(
Expand Down

0 comments on commit d523946

Please sign in to comment.