zlacker

[return to "Show HN: Hatchet – Open-source distributed task queue"]
1. kcorbi+Nd[view] [source] 2024-03-08 18:13:21
>>abelan+(OP)
I love your vision and am excited to see the execution! I've been looking for exactly this product (postgres-backed task queue with workers in multiple languages and decent built-in observability) for like... 3 years. Every 6 months I'll check in and see if someone has built it yet, evaluate the alternatives, and come away disappointed.

One important feature request that probably would block our adoption: one reason why I prefer a postgres-backed queue over eg. Redis is just to simplify our infra by having fewer servers and technologies in the stack. Adding in RabbitMQ is definitely an extra dependency I'd really like to avoid.

(Currently we've settled on graphile-worker which is fine for what it does, but leaves a lot of boxes unchecked.)

◧◩
2. abelan+9g[view] [source] 2024-03-08 18:23:12
>>kcorbi+Nd
Thank you, appreciate the kind words! What boxes are you looking to check?

Yes, I'm not a fan of the RabbitMQ dependency either - see here for the reasoning: >>39643940 .

It would take some work to replace this with listen/notify in Postgres, less work to replace this with an in-memory component, but we can't provide the same guarantees in that case.

◧◩◪
3. jagged+Ce1[view] [source] 2024-03-08 23:41:37
>>abelan+9g
I come to this only as an interested observer, but my experience with listen/notify is that it outperforms rabbitmq/kafka in small to medium operations and has always pleasantly surprised me. You might find out it's a little easier than you think to slim your dependency stack down.
◧◩◪◨
4. hosh+sb2[view] [source] 2024-03-09 13:45:57
>>jagged+Ce1
How do you handle things when no listeners are available to be notified?
◧◩◪◨⬒
5. abelan+1K2[view] [source] 2024-03-09 18:23:42
>>hosh+sb2
Presumably there'd be a messages table that you listen/notify on, and you'd replay messages that weren't consumed when a listener rejoins. But yeah, this is the overhead I was referencing.
◧◩◪◨⬒⬓
6. jagged+TZ2[view] [source] 2024-03-09 20:56:01
>>abelan+1K2
Yep, but practically speaking, you need those records anyway even if you're using another queue to actually distribute the jobs. At least every system I've ever built of a reasonable size has a job audit table anyway. Plus it's an "Enterprise Feature™" so you can differentiate on it if you like that kind of feature-based pricing
◧◩◪◨⬒⬓⬔
7. hosh+lj3[view] [source] 2024-03-10 00:49:49
>>jagged+TZ2
Postgres's LISTEN/NOTIFY doesn't keep those kinds of records. The whole point of using SKIP LOCK is so that you can make updates to rows to keep those kinds of messages with concurrent consumers.
[go to top]