49 releases (26 breaking)

0.34.0 Mar 4, 2024
0.33.0 Nov 7, 2023
0.32.1 Sep 30, 2023
0.31.0 Jul 25, 2023
0.0.1 Jun 17, 2020

#43 in Network programming

Download history 9017/week @ 2023-12-24 11130/week @ 2023-12-31 14097/week @ 2024-01-07 15145/week @ 2024-01-14 14512/week @ 2024-01-21 15580/week @ 2024-01-28 13609/week @ 2024-02-04 10731/week @ 2024-02-11 13778/week @ 2024-02-18 16175/week @ 2024-02-25 15470/week @ 2024-03-03 14943/week @ 2024-03-10 14751/week @ 2024-03-17 15501/week @ 2024-03-24 16318/week @ 2024-03-31 15350/week @ 2024-04-07

62,739 downloads per month
Used in 71 crates (27 directly)

Apache-2.0

670KB
12K SLoC

A Rust client for the NATS messaging system.

Motivation

Rust may be one of the most interesting new languages the NATS ecosystem has seen. We believe this client will have a large impact on NATS, distributed systems, and embedded and IoT environments. With Rust, we wanted to be as idiomatic as we could be and lean into the strengths of the language. We moved many things that would have been runtime checks and errors to the compiler, most notably options on connections, and having subscriptions generate multiple styles of iterators since iterators are first-class citizens in Rust. We also wanted to be aligned with the NATS philosophy of simple, secure, and fast!

Clients

There are two clients available in two separate crates:

async-nats

License Apache 2 Crates.io Documentation Build Status

Async Tokio-based NATS client.

Supports:

  • Core NATS
  • JetStream API
  • JetStream Management API
  • Key Value Store
  • Object Store
  • Service API

The API is stable, however it remains on 0.x.x versioning, as async ecosystem is still introducing a lot of ergonomic improvements. Some of our dependencies are also considered stable, yet versioned <1.0.0, like rustls, which might introduce breaking changes that can affect our users in some way.

nats

License Apache 2 Crates.io Documentation Build Status

Legacy synchronous client that supports:

  • Core NATS
  • JetStream API
  • JetStream Management API
  • Key Value Store
  • Object Store

This client does not get updates, unless those are security fixes. Please use the new async-nats crate.

Documentation

Please refer each crate docs for API reference and examples.

Additionally Check out NATS by example - An evolving collection of runnable, cross-client reference examples for NATS.

Feedback

We encourage all folks in the NATS and Rust ecosystems to help us improve this library. Please open issues, submit PRs, etc. We're available in the rust channel on the NATS slack as well!

Dependencies

~20–34MB
~616K SLoC