Welcome to the NATS Blog! We have content from NATS Maintainers, end-users, and community contributors. We always appreciate outside contributions so if you would like to contribute a blog post, see our Contributor's Guide for more information.

NATS Server 2.9.16 Release

BYRON RUTH — April 19, 2023

The NATS maintainers are very proud to announce the 2.9.16 release ! 🥳 This release brings another round of stability and performance improvements, leveraging our new quality engineering practices described in the 2.9.15 announcement post , and iterating directly with users having high-scale and latency-sensitive workloads. Given the positive feedback on the previous announcement post focusing on the higher-level impact of the changes, going forward all releases will have an announcement post! Read more...

NATS Server 2.9.15 Release

BYRON RUTH — March 3, 2023

Normally, the NATS maintainers do not publish a dedicated announcement for a patch release, but the 2.9.15 release of the NATS server has several significant stability and performance improvements worth highlighting, all driven by our new quality engineering process! 🥳 What does a patch release mean to NATS? And what are these new quality engineering processes? Release management At the beginning of 2023, the NATS maintainers drafted an end-to-end “release management” document which includes the policies and procedures used for each NATS server release, everything from initial scoping to communication of the release itself. Read more...

WunderGraph Cloud and JetStream

DUSTIN DEUS — February 1, 2023

WunderGraph At WunderGraph, we’re building an infra-less cloud for developers, meaning that we free developers from dealing with infrastructure. We believe a developer doesn’t need to be proficient in deploying and maintaining infrastructure to build a global SaaS. WunderGraph is here to make our life easier (We use WunderGraph to build WunderGraph Cloud ). It allows you to integrate data sources of different types like REST, GraphQL, and Databases into a unified representation (the Virtual Graph) to make the work with your API dependencies a pleasant experience. Read more...

Getting started with

BYRON RUTH — November 28, 2022

For those relatively new to NATS, it may come as a surprise that the NATS server has native support for WebSockets ! What this means in practice, is that the NATS server binary is able to support direct WebSocket connections from the browser (or other clients) using it as a transport layer for the NATS protocol rather than raw TCP packets. In addition to server-side support, there is an official nats. Read more...

Infinite message deduplication in JetStream

JEAN-NOËL MOYNE — November 14, 2022

One feature, released in the v2.9.0 NATS server , that flew under the radar was the new DiscardNewPerSubject option on a stream. This blog post will describe this new feature as well as give a practical example of how it can be used to provide exactly-once message publication quality of service (QoS) through infinite deduplication that goes beyond the existing time-based deduplication feature of JetStream as well as many other streaming systems, such as Kafka. Read more...

The Matrix Dendrite Project move from Kafka to NATS

NEIL ALEXANDER — October 4, 2022

Matrix Dendrite Matrix is a federated protocol for real-time communications built on top of distributed data structures and Dendrite is an implementation of a Matrix homeserver built following a microservice architecture. It was originally intended to help us to overcome some load issues that were present in earlier monolithic implementations at the time. As a result, flexibility, performance, and scalability have been three critical areas of focus in our development. Read more...

NATS Server 2.9 Release

BYRON RUTH — September 16, 2022

The NATS core team and contributors are proud to announce the first release of the 2.9.x series! 🚀 Thank you to the 48(!) people who contributed to this release through GitHub issues, discussions, and pull requests, as well as the hundreds of people in the Slack community who asked questions, presented use cases, and tested early versions of the 2.9 release. ❤️ This release is a milestone for users leveraging JetStream with many improvements and a handful of new features. Read more...

Benchmarking Using NATS CLI Tool

JEAN-NOËL MOYNE — December 28, 2021

Benchmarks for throughput and speed have always been a desired data point for choosing messaging infrastructures but can be controversial due to the varying circumstances of the hardware, environment, and software version in use. Published benchmarks are often deemed not credible as the results can be skewed to improve performance and therefore become unreliable for critical infrastructure decision making. With this in mind, we always recommend performing benchmarks using an environment as close to your production use as possible. Read more...

Building Microservices with NATS

CHANAKA FERNANDO — November 18, 2021

Introduction Microservices are becoming a commodity in the enterprise world. The reason being the agility and the modularity it brings to the software development and delivery process. It is not that difficult to get started with microservices since there are enough tools and frameworks available to bootstrap the microservices-based application development. But there is a point that most teams who adopt microservices find it challenging to deal with. That is when the number of microservices goes beyond a certain limit (let’s say 25 in some cases), people start realizing the real challenges that microservices architecture brings to the table. Read more... .NET C# Client Library JetStream Pre-Release

SCOTT FAUERBACH — July 26, 2021

A pre-release of JetStream support has just been made available for the NATS .NET C# Client Library! The package NATS.Client 0.14.0-pre1 has been published on NuGet Gallery. You can follow progress and provide feedback via the Add Jetstream Connection/Client APIs GitHub Issue. Code Starting Points These are the important interfaces for you to get familiar with. IConnection has new methods which allow you to work with JetStream. CreateJetStreamManagementContext(...) gets an implementation of IJetStreamManagement , the interface that provides stream management functions. Read more...