feat: Use postgres as a queue

We've been keen to try this for a while as it means we can remove redis as a
dependency, which makes Immich easier to setup and run.

This replaces bullmq with a bespoke postgres queue. Jobs in the queue are
processed either immediately via triggers and notifications, or eventually if a
notification is missed.
This commit is contained in:
Thomas Way
2025-04-30 20:43:51 +01:00
parent b845184c80
commit 8c0c8a8d0e
46 changed files with 731 additions and 915 deletions

View File

@@ -577,15 +577,12 @@ export type FaceDto = {
};
export type JobCountsDto = {
active: number;
completed: number;
delayed: number;
failed: number;
paused: number;
waiting: number;
};
export type QueueStatusDto = {
isActive: boolean;
isPaused: boolean;
paused: boolean;
};
export type JobStatusDto = {
jobCounts: JobCountsDto;
@@ -3673,7 +3670,7 @@ export enum JobCommand {
Start = "start",
Pause = "pause",
Resume = "resume",
Empty = "empty",
Clear = "clear",
ClearFailed = "clear-failed"
}
export enum MemoryType {