tokio_nats/lib.rs
1//! [](https://crates.io/crates/tokio-nats)
2//! [](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}