NATS does many-to-many.
Re:Kafka at the Low End
by Joel_Mckay on Tuesday February 18, 2025 @10:26PM
(#43098232)
Actually, I used RabbitMQ static routes to feed per-cpu-core single thread bound consumers that restart their process every k transactions, or watchdog process timeout after w seconds. This prevents cross contamination of memory spaces, and slow fragmentation when the parsers get hammered hard.
RabbitMQ/Erlang on OTP is probably one of the most solid solutions I've deployed over the years (low service cycle demands.) Highly recommended with the AMQP SSL credential certs, and GUID approach to application layer load-balancing. Cut our operational costs around 37 times lower than traditional load-balancer approaches. =3
Agree. RabbitMQ is a Swiss Army knife that has a lot of available patterns, scales fairly well, and is very robust. If you don’t know what to choose, start with Rabbit. It will let you figure out which patterns you need and you probably won’t scale out of it. Pay someone to host it.
On the other hand, if you know what you need to do and it’s supported by it, NATS is IME the way to go (particularly JetStream).
Re:Kafka at the Low End
by rcombatwombat on Monday February 24, 2025 @02:26PM
(#43163783)
IMHO NATS is an even better Swiss army knife than Rabbit
Re:Kafka at the Low End
by rcombatwombat on Monday February 24, 2025 @02:24PM
(#43163759)
NATS does much more than pub/sub (with any fan out), it also does queueing in Core NATS (no persistence) and streaming including queuing over streams (with ack/nack/term). Don't be fooled into thinking NATS doesn't do queueing because it doesn't have a "Q" in the name :).
RabbitMQ is good for 1 producer -> 1 consumer with ack/nack
Right?