One of the most important things to understand in Apache Kafka is how data flows. This happens through two main actors: producers and consumers.
NATS
Scalability and Reliability in NATS
Object Store in NATS: Storing Files and Blobs
In the last article, we talked about the NATS Key-Value Store (KV), which is great for lightweight configuration and state management. But what if you need to store something larger, like a file, image, or binary data? For that, NATS provides the Object Store, also built on top of JetStream.
Key-Value Store in NATS: Simple State Management
So far, we’ve looked at different messaging patterns in NATS like Publish–Subscribe, Request–Reply, and Queue Groups. Those patterns are great for communication, but sometimes you need a way to store small pieces of state that services can read, update, or watch for changes. NATS provides this through its Key-Value Store (KV), built on top of…
Queue Groups in NATS: Load Balancing for Subscribers
In the previous articles, we looked at Publish–Subscribe and Request–Reply patterns in NATS. Pub/Sub is great for broadcasting messages to many subscribers, while Request–Reply is perfect for one-to-one communication. But what if you want to distribute messages across a group of workers so that only one of them processes each message? This is where Queue…
Request–Reply in NATS: One-to-One Messaging
In the previous article, I explained the Publish–Subscribe pattern in NATS, which is great for broadcasting messages to many subscribers. But sometimes you need a different style: you want to send a message and get a response back. This is where the Request–Reply pattern comes in.
Publish–Subscribe in NATS: Simple and Powerful Messaging
In the previous article, I wrote an overview of NATS and NATS JetStream. Before we go deeper into advanced topics like scalability and reliability, it’s important to understand the most common messaging pattern in NATS: Publish–Subscribe. What is Publish–Subscribe? Publish–Subscribe (or pub/sub) is a way of sending messages where: It’s a decoupled system: the publisher…
NATS JetStream: Persistence and Streaming Made Simple
In the previous article, I wrote an overview of NATS, explaining what it is, how it works, and why developers use it for building distributed systems. If you are new to NATS, I recommend reading that article first because it covers the basics like subjects, publishers, and subscribers. In this article, let’s go a bit…
Introduction to NATS: A Lightweight Messaging System
Why Messaging Systems Matter In modern software, applications rarely work alone. A mobile app might need to talk to a backend service. That backend service might need to talk to a payment gateway, and the payment system may need to update analytics. Instead of building a direct web of connections, developers often use a messaging…


