frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

AniSora: Open-source anime video generation model

https://komiko.app/video/AniSora
178•PaulineGar•8h ago•52 comments

Coding without a laptop: Two weeks with AR glasses and Linux on Android

https://holdtherobot.com/blog/2025/05/11/linux-on-android-with-ar-glasses/
619•mikenew•3d ago•251 comments

Project Verona: Fearless Concurrency for Python

https://microsoft.github.io/verona/pyrona.html
47•ptx•2d ago•12 comments

Show HN: Turn any workflow diagram into compilable, running and stateful code

https://workflows.diagrid.io/
41•yaronsc•3d ago•5 comments

Lessons from Mixing Rust and Java: Fast, Safe, and Practical

https://medium.com/@greptime/how-to-supercharge-your-java-project-with-rust-a-practical-guide-to-jni-integration-with-a-86f60e9708b8
15•killme2008•3d ago•6 comments

Experts have it easy (2024)

https://boydkane.com/essays/experts
74•veqq•6h ago•22 comments

ARMv9 Architecture Helps Lift Arm to New Financial Heights

https://www.nextplatform.com/2025/05/12/armv9-architecture-helps-lift-arm-to-new-financial-heights/
64•rbanffy•3d ago•14 comments

Mystical

https://suberic.net/~dmm/projects/mystical/README.html
239•mmphosis•14h ago•25 comments

Mexican Navy ship crashes into Brooklyn Bridge leaving two people dead

https://www.theguardian.com/us-news/2025/may/18/mexican-navy-ship-hits-brooklyn-bridge-during-promotional-tour
49•teleforce•2h ago•27 comments

Show HN: Pixelagent – Build your Stateful Agent Framework in 200 lines of code

https://github.com/pixeltable/pixelagent
10•pierrebrunelle•2d ago•3 comments

Directory of MCP Servers

https://github.com/chatmcp/mcpso
143•saikatsg•13h ago•48 comments

How to have the browser pick a contrasting color in CSS

https://webkit.org/blog/16929/contrast-color/
192•Kerrick•16h ago•64 comments

Push Ifs Up and Fors Down

https://matklad.github.io/2023/11/15/push-ifs-up-and-fors-down.html
441•goranmoomin•22h ago•162 comments

Mice grow bigger brains when given this stretch of human DNA

https://www.nature.com/articles/d41586-025-01515-z
38•pavel_lishin•3d ago•18 comments

Dead Stars Don’t Radiate

https://johncarlosbaez.wordpress.com/2025/05/17/dead-stars-dont-radiate-and-shrink/
203•thechao•14h ago•97 comments

If nothing is curated, how do we find things

https://tadaima.bearblog.dev/if-nothing-is-curated-how-do-we-find-things/
225•nivethan•16h ago•157 comments

Climbing trees 1: what are decision trees?

https://mathpn.com/posts/climbing-trees-1/
14•SchwKatze•5h ago•1 comments

Palette lighting tricks on the Nintendo 64

https://30fps.net/pages/palette-lighting-tricks-n64/
191•ibobev•18h ago•40 comments

Pglocks.org

https://pglocks.org/
19•hnasr•5h ago•0 comments

Understanding Transformers via N-gram Statistics

https://arxiv.org/abs/2407.12034
79•pona-a•12h ago•2 comments

FreeBASIC is a free/open source BASIC compiler for Windows DOS and Linux

https://freebasic.net/
83•90s_dev•9h ago•17 comments

Memetics – A Growth Industry in US Military Operations (2006) [pdf]

https://apps.dtic.mil/sti/pdfs/ADA507172.pdf
30•lawrenceyan•7h ago•10 comments

“Streaming vs. Batch” Is a Wrong Dichotomy, and I Think It's Confusing

https://www.morling.dev/blog/streaming-vs-batch-wrong-dichotomy/
48•ingve•3d ago•27 comments

The Lost Japanese ROM of the Macintosh Plus

https://www.journaldulapin.com/2025/05/17/the-lost-japanese-rom-of-the-macintosh-plus-which-isnt-lost-anymore/
131•ecliptik•9h ago•39 comments

Bike-mounted sensor could boost the mapping of safe cycling routes

https://newatlas.com/bicycles/proxicycle-bicycle-sensor-safe-cycling-routes/
68•yunusabd•3d ago•31 comments

O2 VoLTE: locating any customer with a phone call

https://mastdatabase.co.uk/blog/2025/05/o2-expose-customer-location-call-4g/
231•kragniz•19h ago•49 comments

Espanso – Cross-Platform Text Expander Written in Rust

https://github.com/espanso/espanso
75•kartikarti•3d ago•19 comments

Proton threatens to quit Switzerland over new surveillance law

https://www.techradar.com/vpn/vpn-privacy-security/we-would-be-less-confidential-than-google-proton-threatens-to-quit-switzerland-over-new-surveillance-law
385•taubek•17h ago•176 comments

Pyrefly: A new type checker and IDE experience for Python

https://engineering.fb.com/2025/05/15/developer-tools/introducing-pyrefly-a-new-type-checker-and-ide-experience-for-python/
191•homarp•19h ago•120 comments

Weather Report from Saturn's Moon Titan

https://www.sci.news/astronomy/titan-weather-13907.html
19•astroimagery•2d ago•0 comments
Open in hackernews

Ask HN: What's your go-to message queue in 2025?

34•enether•2d ago
The space is confusing to say the least.

Message queues are usually a core part of any distributed architecture, and the options are endless: Kafka, RabbitMQ, NATS, Redis Streams, SQS, ZeroMQ... and then there's the “just use Postgres” camp for simpler use cases.

I’m trying to make sense of the tradeoffs between:

- async fire-and-forget pub/sub vs. sync RPC-like point to point communication

- simple FIFO vs. priority queues and delay queues

- intelligent brokers (e.g. RabbitMQ, NATS with filters) vs. minimal brokers (e.g. Kafka’s client-driven model)

There's also a fair amount of ideology/emotional attachment - some folks root for underdogs written in their favorite programming language, others reflexively dismiss anything that's not "enterprise-grade". And of course, vendors are always in the mix trying to steer the conversation toward their own solution.

If you’ve built a production system in the last few years:

1. What queue did you choose?

2. What didn't work out?

3. Where did you regret adding complexity?

4. And if you stuck with a DB-based queue — did it scale?

I’d love to hear war stories, regrets, and opinions.

Comments

a_void_sky•2d ago
Kafka for communication between microservices, and MQTT (VerneMQ) for IOT devices
toomuchtodo•2d ago
What are your thoughts on Apache Pulsar vs Kafka?
oulipo•2d ago
I'm hesitating with EMQx, have you tried it? why did you choose VerneMQ?
nop_slide•2d ago
Solid queue in rails
AznHisoka•2d ago
Sidekiq, Sidekiq, Sidekiq (or just Postgres if Im dealing with something trivial)
varbhat•2d ago
NATS
RedShift1•2h ago
I use NATS too! It has worked very well for me, using it to collect data from IoT devices. I don't really like all the other bits they tacked on like jetstream and object store, that seems beyond its scope. Subject authorization is also painful to implement. But runtime behaviour has been flawless for me.
clark-kent•2d ago
SQS. For Ruby apps I use Shoryuken with SQS.
ok1984•2d ago
Surprised no body is mentioning ActiveMQ!
austin-cheney•2d ago
I have so far gotten by plenty well writing my own queue systems to fit the needs of the consuming application. Normally the only place where I need queue systems is in distributed systems with rapid fire transmissions to ensure messages hit the network in time sequence order. The additional benefit is that network traffic is saved in order when the current network socket fails so that nothing is lost but time.
speedgoose•1d ago
I played with most message queues and I go with RabbitMQ in production.

Mostly because it has been very reliable for years in production at a previous company, and doesn’t require babysitting. Its recent versions also has new features that make it is a descent alternative to Kafka if you don’t need to scale to the moon.

And the logo is a rabbit.

swyx•2h ago
Datadog too. i often wonder how come more companies dont pick cute mascots. gives a logo, makes everyone have warm fuzzies immediately, creates pun opportunities.

inb4 "oh but you wont be taken seriously" well... datadog.

revskill•1d ago
A cron job did thd work.
Jemaclus•1d ago
For large applications in a service-oriented architecture, I leverage Kafka 100% of the time. With Confluent Cloud and Amazon MSK, infra is relatively trivial to maintain. There's really no reason to use anything else for this.

For smaller projects of "job queues," I tend to use Amazon SQS or RabbitMQ.

But just for clarity, Kafka is not really a message queue -- it's a persistent structured log that can be used as a message queue. More specifically, you can replay messages by resetting the offset. In a queue, the idea is once you pop an item off the queue, it's no longer in the queue and therefore is gone once it's consumed, but with Kafka, you're leaving the message where it is and moving an offset instead. This means, for example, that you can have many many clients read from the same topic without issue.

SQS and other MQs don't have that persistence -- once you consume the message and ack, the message disappears and you can't "replay it" via the queue system. You have to re-submit the message to process it. This means you can really only have one client per topic, because once the message is consumed, it's no longer available to anyone else.

There are pros and cons to either mechanism, and there's significant overlap in the usage of the two systems, but they are designed to serve different purposes.

The analogy I tend to use is that Kafka is like reading a book. You read a page, you turn the page. But if you get confused, you can flip back and reread a previous page. An MQ like RabbitMQ or Sidekiq is more like the line at the grocery store: once the customer pays, they walk out and they're gone. You can't go back and re-process their cart.

Again, pros and cons to both approaches.

"What didn't work out?" -- I've learned in my career that, in general, I really like replayability, so Kafka is typically my first choice, unless I know that re-creating the messages are trivial, in which case I am more inclined to lean toward RabbitMQ or SQS. I've been bitten several times by MQs where I can't easily recreate the queue, and I lose critical messages.

"Where did you regret adding complexity?" -- Again, smaller systems that are just "job queues" (versus service-to-service async communication) don't need a whole lot of complexity. So I've learned that if it's a small system, go with an MQ first (any of them are fine), and go with Kafka only if you start scaling beyond a single simple system.

"And if you stuck with a DB-based queue -- did it scale?" -- I've done this in the past. It scales until it doesn't. Given my experience with MQs and Kafka, I feel it's a trivial amount of work to set up an MQ/Kafka, and I don't get anything extra by using a DB-based queue. I personally would avoid these, unless you have a compelling reason to use it (eg, your DB isn't huge, and you can save money).

michaelmior•2h ago
> This means you can really only have one client per topic, because once the message is consumed, it's no longer available to anyone else.

It depends on your use case (or maybe what you mean by "client"). If I just have a bunch of messages that need to be processed by "some" client, then having the message disappear once a client has processed it is exactly what you want.

mlhpdx•2h ago
We build applications very differently. SQS queues with 1000s of clients have been a go to for me for over a decade. And the opposite as well — 1000s of queues (one per client device, they’re free). Zero maintenance, zero cost when unused. Absurd scalability.
tacostakohashi•6h ago
UUCP
RedShift1•2h ago
People will call me crazy but why not SMTP for message queueing?
z3ugma•2h ago
Does Google Cloud Tasks count?
catkitcourt•2h ago
Pulsar
dmazin•2h ago
No one ever seems to use it, but for AMPQ I like Beanstalkd. It’s fast, stable and has not failed me under high RPS.
bilinguliar•2h ago
This is my go-to solution as well. It is great, but utilizes just one CPU core. But if this the problem, then your business is already booming.
jolux•2h ago
Kafka is fairly different from the rest of these — it’s persistent and designed for high read throughput to multiple simultaneous clients at the same time, as some other commenters have pointed out.

We wanted replayability and multiple clients on the same topic, so we evaluated Kafka, but we determined it was too operationally complex for our needs. Persistence was also unnecessary as the data stream already had a separate archiving system and existing clients only needed about 24hr max of context. AWS Kinesis ended up being simpler for our needs and I have nothing but good things to say about it for the most part. Streaming client support in Elixir was not as good as Kafka but writing our own adapter wasn’t too hard.

mlhpdx•2h ago
SQS
KingOfCoders•2h ago
NATS.io because I'm using Go, and I can just embed it for one server [0], one binary to deploy with Systemd, but able to split it out when scaling the MVP.

[0] https://www.inkmi.com/blog/how-i-made-inkmi-selfhealing

bilinguliar•2h ago
I am using Beanstalkd, it is small and fast and you just apt-get it on Debian.

However, I have noticed that oftentimes devs are using queues where Workflow Engines would be a better fit.

If your message processing time is in tens of seconds – talk to your local Workflow Engine professional (:

dkh•2h ago
A classic. Not something I personally use these days, but I think just as a piece of software it is an eternally good example of something simple, powerful, well-engineered, pleasant to use, and widely-compatible, all at the same time
janstice•1h ago
In that case, any suggestions if the answer was looking for workflow engines? Ideally something that will work for no-person-in-the-middle workloads in the tens of seconds range as well as person-making-a-decision workflows that can live for anywhere between minutes and months?
wordofx•2h ago
Postgres. Doing ~ 70k messages/second average. Nothing huge but don’t need anything dedicated yet.
lawn•2h ago
I'm curious on how people use Postgres as a message queue. Do you rely on libraries or do you run a custom implementation?
digianarchist•2h ago
pgmq https://github.com/pgmq/pgmq
ericaska•2h ago
We also use Postgres but we don't have many jobs. It's usually 10-20 squedule that creates hourly-monthly jobs and they are mostly independent. Currently a custom made solution but we are going to update it to use skip locked and use Notify/Listen + interval to handle jobs. There is a really good video about it on YouTube called: "Queues in PostgreSQL Citus Con."
padjo•1h ago
You can go an awfully long way with just SELECT … FOR UPDATE … SKIP LOCKED
wordofx•48m ago
Just select for update skipped locked. Table is partitioned to keep unprocessed small.
iamcalledrob•1h ago
Curious what kind of hardware you're using for that 70K/s?
wordofx•45m ago
It’s an r8g instance in aws. Can’t remember the size but I think it’s over provisioned because it’s at like 20% utilisation and only spikes to 50.
MyOutfitIsVague•2h ago
For my extremely specialized case, I use a SQLite database as a message queue. It absolutely wouldn't scale, but it doesn't need to. It works extremely well for what I need it to do.
MichaelMoser123•2h ago
using zeebe/Camunda at work. The system gives you a way of designing and partitioning message-based workflows. It has a very thorough design.
kabes•1h ago
We had a lot of reliability isdues with zeebe/camunda (granted we started using it at version 0.10), and now they also rugulled the free version. So I would never go near that company again.
MichaelMoser123•1h ago
reliability is much better now, as far as i can tell.
crmd•2h ago
The US Federal Reserve uses IBM MQ for the FedNow interbank settlement service that went live last year.

Architecture info: https://explore.fednow.org/resources/technical-overview-guid...

kev009•1h ago
Likely implies z/OS is common on both sides. Given the stakes and availability needs not a bad choice.
stephenr•1h ago
I've used Qless for several years;

For those unfamiliar, it's a Lua library that gets executed in Redis using one of the various language bindings (which are essentially wrappers around calling the Lua methods).

With our multi-node redis setup it seems to be quite reliable.

kabes•1h ago
Maybe start by explaining what you want to use it for?
vanbashan•1h ago
I prefer pulsar. Elegant modular design and fully open source ecosystem.

Performance is at least as good as Kafka.

For simpler workload, beanstalkd could be a good fit, either.

lmm•1h ago
SQS is great if you're already on AWS - it works and gets out of your way.

Kafka is a great tool with lots of very useful properties (not just queues, it can be your primary datastore), but it's not operationally simple. If you're going to use it you should fully commit to building your whole system on it and accept that you will need to invest in ops at least a little. It's not a good fit for a "side" feature on the edge of your system.

csomar•1h ago
Another option to consider: Cloudflare Workers. They have a simple queue but you'll need to patch it with a Worker anyway. This means you can programatically manage the queue through the worker and also it makes it easy to send/receive HTTP requests.
DonHopkins•1h ago
What do people think of Supabase?
adamcharnock•37m ago
I would highlight a distinction between Queues and Streams, as I think this is an important factor in making this choice.

In the case of a queue, you put an item in the queue, and then something removes it later. There is a single flow of items. They are put in. They are taken out.

In the case of a stream, you put an item in the queue, then it can be removed multiple times by any other process that cares to do so. This may be called 'fan out'.

This is an important distinction and really effects how one designs software that uses these systems. Queues work just fine for, say, background jobs. A user signs up, and you put a task in the 'send_registration_email' queue.[1]

However, what if some _other_ system then cares about user sign ups? Well, you have to add another queue, and the user sign-up code needs to be aware of it. For example, a 'add_user_to_crm' queue.

The result here is that choosing a queue early on leads to a tight-coupling of services down the road.

The alternative is to choose streams. In this case, instead of saying what _should_ happen, you say what _did_ happen (past tense). Here you replace 'send_registration_email' and 'add_user_to_crm' with a single stream called 'used_registered'. Each service that cares about this fact is then free to subscribe to that steam and get its own copy of the events (it does so via a 'consumer group', or something of a similar name).

This results in a more loosely coupled system, where you potentially also have access to an event history should you need it (if you configure your broker to keep the events around).

--

This is where Postgresql and SQS tend to fall down. I've yet to hear of an implementation of streams in Postgresql[2]. And SQS is inherently a queue.

I therefore normally reach for Redis Steams, but mostly because it is what I am familiar with.

Note: This line of thinking leads into Domain Driven Design, CQRS, and Event Sourcing. Each of which is interesting and certainly has useful things to offer, although I would advise against simply consuming any of them wholesale.

[1] Although this is my go-to example, I'm actually unconvinced that email sending should be done via a queue. Email is just a sequence of queues anyway.

[2] If you know of one please tell me!