3 ms·
I use NATS in production. Kafka and NATS are almost complete opposites. One is a durable, partitioned queue; the other is a no-persistence message queue.
by pritambaral 9y ago
I use NATS in production. Kafka and NATS are almost complete opposites. One is a durable, partitioned queue; the other is a no-persistence message queue.
- no1youknowz 9y agoAren't they fixing that with NATS Streaming Server?
- vpol 9y agoThey did. Partially. I use nats-streaming in Production. It still does not have real “clustering” solution, but for my small scale I’m able to manage ~7-10k messages per second. Which is fine for many companies.
- manigandham 9y agoThere's nothing to "fix" - NATS is a distributed and fast pub/sub system. NATS Streaming is actually a client, it uses NATS to communicate and basically just subscribes to some topics, saves messages it receives, and will then replay them back to you if asked. Imagine how you would build a persistent logging app on top of NATS, and that's what NATS Streaming is.
- SEJeff 9y agoWe built a metrics relay using it (nats) and are pushing > 500k metrics per second in bursts just fine. I've been pretty blown away with the perf of it actually. That said, it isn't durable, so normal here be dragons warning apply.
- manigandham 9y agoNeither are message queues. NATS is a pub/sub system and NATS Streaming is a client that connects to NATS and stores all messages on certain channels for replay.
- pritambaral 9y agoIndeed, NATS is a pub/sub system. I should have said "message broker", but defaulted to "queue". Is a zero-depth queue a queue?
- manigandham 9y ago> Is a zero-depth queue a queue? Yes. Queuing semantics are usually about ordered delivery, acknowledgements, consumer groups, retries, priorities, etc. RabbitMQ does that, NATS only has queue groups at most.