pgmq
Que
pgmq | Que | |
---|---|---|
14 | 10 | |
1,848 | 2,287 | |
58.0% | 0.2% | |
8.9 | 5.6 | |
3 days ago | 17 days ago | |
Rust | Ruby | |
PostgreSQL License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
pgmq
- Pgmq: Lightweight message queue extension for Postgres
- Replace SQS / RSMQ with pgmq: A lightweight message queue based on Postgres
-
Introducing pgzx: create PostgreSQL extensions using Zig
And lots of interesting extensions use it, like
https://github.com/tembo-io/pgmq
https://github.com/zombodb/zombodb
https://github.com/supabase/pg_jsonschema
-
Show HN: Hatchet – Open-source distributed task queue
Have you considered https://github.com/tembo-io/pgmq for the queue bit?
- Show HN: An SQS Alternative on Postgres
-
Postgres as Queue
some notes about pgmq, https://github.com/tembo-io/pgmq, that is on this list. It is built as an extension in Postgres, which makes it compatible with all languages that have a Postgres driver.
There's no 'magic' to it, it uses existing Postgres features so all the performance and consistency guarantees of Postgres are to be expected. Easily gets to 10k+ concurrent reads and writes even on smaller sized Postgres instances, which is more than most applications need.
- FLaNK Weekly 31 December 2023
-
What are the best job-scheduling tools, frameworks or libraries?
Newer project but there's no library needed. https://github.com/tembo-io/pgmq. They have a pretty simple SQL api similar to SQS. It's an extension though, so some cloud provider will not support it.
- FLaNK Stack Weekly for 20 Nov 2023
-
Choose Postgres Queue Technology
PGMQ does not require a client library, https://github.com/tembo-io/pgmq so long as your language of choice can run SQL. All the functions live in Postgres, and you just call them with SQL statement. Very similar feel and semantics to SQS.
Que
-
Choose Postgres Queue Technology
> Can you define "low throughput"?
<1000 messages per minute
Not saying SKIP LOCKED can't work with that many. But you'll probably want to do something better.
FWIW, Que uses advisory locks [1]
[1] https://github.com/que-rb/que
-
Introducing tobox: a transactional outbox framework
Probably worth mentioning that aside from delayed_job there are at least two more modern alternatives backed by the DB: Que and good_job.
-
Sidekiq jobs in ActiveRecord transactions
Good article. Sidekiq is a good, well respected too. However if you are starting out I would recommend not using it, and instead choosing a DB based queue system. We have great success with que, but there are others like good_job.
-
SQL Maxis: Why We Ditched RabbitMQ and Replaced It with a Postgres Queue
(not sure why this comment was dead, I vouched for it)
There are a lot of ways to implement a queue in an RDBMS and a lot of those ways are naive to locking behavior. That said, with PostgreSQL specifically, there are some techniques that result in an efficient queue without locking problems. The article doesn't really talk about their implementation so we can't know what they did, but one open source example is Que[1]. Que uses a combination of advisory locking rather than row-level locks and notification channels to great effect, as you can read in the README.
[1]: https://github.com/que-rb/que
-
Delayed Job vs. Sidekiq: Which Is Better?
https://github.com/que-rb/que
This one seems to be the most performant. By a lot too, from my understanding (haven't ran any benchmark myself, but the readme shows some good postgres knowledge)
-
Sidekiq VS Que - a user suggested alternative
2 projects | 3 Feb 2022
Que seems like a good alternative if one doesn't want to use Reids. However, given that most apps need Redis (and have it within their infrastructure) nowadays, I still think that Sidekiq is the better option in the generic case.
-
Devious SQL: Message Queuing Using Native PostgreSQL
Implementations that use advisory locks like https://github.com/que-rb/que are much more efficient (atleast when I last tested) and will easily reach 10k job/s on even very modest hardware.
There is a Go port of Que but you can also easily port it to any language you like. I have a currently non-OSS implementation in Rust that I might OSS someday when I have time to clean it up.
-
Postgres is a great pub/sub and job server
It’s also possible to use advisory locks to implement a job queue in Postgres. See e.g. Que[1]. Note there are a fair number of corner cases, so studying Que is wise if trying to implement something like this, as well as some (a bit older) elaboration[2].
We implemented a similar design to Que for a specific use case in our application that has a known low volume of jobs and for a variety of reasons benefits from this design over other solutions.
[1]: https://github.com/que-rb/que
-
Ruby Schedulers: Whenever vs Sidekiq Cron vs Sidekiq Scheduler
Do also take into consideration que-scheduler (disclaimer, am author). It is built on top of the robust que async job system.
What are some alternatives?
pg-boss - Queueing jobs in Node.js using PostgreSQL like a boss
Sidekiq - Simple, efficient background processing for Ruby
kubeblocks - KubeBlocks is an open-source control plane that runs and manages databases, message queues and other data infrastructure on K8s.
good_job - Multithreaded, Postgres-based, Active Job backend for Ruby on Rails.
FLaNK-EveryTransitSystem - Every transit system
Delayed::Job - Database based asynchronous priority queue system -- Extracted from Shopify
torchgeo - TorchGeo: datasets, samplers, transforms, and pre-trained models for geospatial data
Resque - Resque is a Redis-backed Ruby library for creating background jobs, placing them on multiple queues, and processing them later.
CML_AMP_Intelligent-QA-Chatbot-with-NiFi-Pinecone-and-Llama2 - The prototype deploys an Application in CML using a Llama2 model from Hugging Face to answer questions augmented with knowledge extracted from the website. This prototype introduces Pinecone as a database for storing vectors for semantic search.
Karafka - Ruby and Rails efficient multithreaded Kafka processing framework
screenshot-to-code - Drop in a screenshot and convert it to clean code (HTML/Tailwind/React/Vue)
Shoryuken - A super efficient Amazon SQS thread based message processor for Ruby