Advertisement
Advertisement
β‘ Community Insights
Discussion Sentiment
75% Positive
Analyzed from 289 words in the discussion.
Trending Topics
#latency#end#pgque#bloat#understand#event#messages#long#message#someone
Discussion Sentiment
Analyzed from 289 words in the discussion.
Trending Topics
Discussion (7 Comments)Read Original on HackerNews
Then in the latency tradeof section it says end to end latency is between 1-2 seconds.
Is this under heavy load or always? How does this compare to pgmq end to end latency?
I didn't understand nuances in the beginning myself
We have 3 kinds of latencies when dealing with event messages:
1. producer latency β how long does it take to insert an event message?
2. subscriber latency β how long does it take to get a message? (or a batch of all new messages, like in this case)
3. end-to-end event delivery time β how long does it take for a message to go from producer to consumer?
In case of PgQ/PgQue, the 3rd one is limited by "tick" frequency β by default, it's once per second (I'm thinking how to simplify more frequent configs, pg_cron is limited by 1/s).
While 1 and 2 are both sub-ms for PgQue. Consumers just don't see fresh messages until tick happens. Meanwhile, consuming queries is fast.
Hope this helps. Thanks for the question. Will this to README.
1. SKIP LOCKED family
2. Partition-based + DROP old partitions (no VACUUM required)
3. TRUNCATE family (PgQueβs approach)
And the benefit of PgQue is the failure mode, when a worker gets stuck:
- Table grows indefinitely, instead of
- VACUUM-starved death spiral
And a table growing is easier to reason about operationally?
Itβs challenging to write a queue that doesnβt create bloat, hence why this project is citing it as a feature.