tokio_nats/
lib.rs

1//! [![Crates.io](https://img.shields.io/crates/v/tokio-nats.svg)](https://crates.io/crates/tokio-nats)
2//! [![docs.rs](https://docs.rs/tokio-nats/badge.svg)](https://docs.rs/tokio-nats)
3//! A client for NATS using `tokio` and async-await.
4//!
5//! There are still features missing, but it should be ready for use in simple situations.
6//!
7//! ## Installation
8//!
9//! ```toml
10//! [dependencies]
11//! tokio-nats = "0.4.2"
12//! ```
13//! ## Usage
14//! ```rust
15//!
16//! use tokio_nats::{NatsConfigBuilder, connect};
17//! use futures_util::StreamExt;
18//!
19//! async fn demo() {
20//!     let config = NatsConfigBuilder::default()
21//!         .server("127.0.0.1:4222")
22//!         .build()
23//!         .unwrap();
24//!     let mut client = connect(config).await.unwrap();
25//!
26//!     client.publish("MySubject", "hello world".as_bytes()).await.unwrap();
27//!
28//!     client.subscribe("MyOtherSubject").await.unwrap().for_each(|message| async move {
29//!         println!("Received message {:?}", message);
30//!     }).await;
31//! }
32//! ```
33
34#[macro_use]
35extern crate serde;
36#[macro_use]
37extern crate derive_builder;
38
39mod connection;
40mod errors;
41mod protocol;
42mod subscriptions;
43mod tls;
44
45use bytes::Bytes;
46pub use connection::{connect, NatsClient, NatsConfig, NatsConfigBuilder};
47pub use errors::Error;
48pub use subscriptions::NatsSubscription;
49pub use tls::{TLSConnBuild, TLSConnBuildError, TlsConnParams};
50
51/// A message that has been received by the NATS client.
52#[derive(Debug, Clone)]
53pub struct NatsMessage {
54    pub subject: String,
55    pub payload: Bytes,
56}