feat: Add pg-boss as an alternative queue provider #4619
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This commit introduces pg-boss as an optional alternative to Redis for background job and queue processing in FlowiseAI.
Key changes:
pg-boss
as a dependency.PgBossQueue
,PgBossPredictionQueue
, andPgBossUpsertQueue
classes to implement queue functionality using pg-boss.QueueManager
to conditionally initialize Redis-based queues or pg-boss queues based on theQUEUE_PROVIDER
environment variable.QUEUE_PROVIDER
is set topgboss
, the system will use the PostgreSQL connection details from the existing database configuration (DATABASE_TYPE
,DATABASE_HOST
, etc.) or a specificPG_BOSS_DATABASE_URL
.redis
(default), the existing BullMQ/Redis implementation is used.QUEUE_PROVIDER
environment variable inCONTRIBUTING.md
.This change provides you with the flexibility to leverage your existing PostgreSQL databases for FlowiseAI's background tasks, potentially reducing operational overhead and simplifying deployments, especially for those already using PostgreSQL.
Note: Server-Sent Events (SSE) for real-time updates on predictions are currently tied to the Redis implementation (
RedisEventPublisher
) and will not work ifpg-boss
is selected. Future work may involve implementing a pg-boss compatible SSE mechanism (e.g., usingpg_notify
).