async-nats 0.11.0

A async Rust NATS client
Documentation

A Rust async bleeding edge client for the NATS.io ecosystem.

git clone https://github.com/nats-io/nats.rs

NATS.io is a simple, secure and high performance open source messaging system for cloud native applications, IoT messaging, and microservices architectures.

For sync API refer to the [https://crates.io/crates/nats]

For more information see https://nats.io/.

Examples

Complete example

use bytes::Bytes;
use futures_util::StreamExt;

#[tokio::main]
async fn example() {
let mut client = async_nats::connect("demo.nats.io").await.unwrap();
let mut subscriber = client.subscribe("foo".into()).await.unwrap();

for _ in 0..10 {
client.publish("foo".into(), "data".into()).await.unwrap();
}

let mut i = 0;
while subscriber.next()
.await
.is_some()
{
i += 1;
if i >= 10 {
break;
}
}
assert_eq!(i, 10);
}

Publish

# use bytes::Bytes;
# use std::error::Error;
# use std::time::Instant;

# #[tokio::main]
# async fn main() -> Result<(), Box<dyn Error>> {
let mut client = async_nats::connect("demo.nats.io").await?;

let subject = String::from("foo");
let data = Bytes::from("bar");
for _ in 0..10 {
client.publish("subject".into(), "data".into()).await?;
}
#    Ok(())
# }

Subscribe

# use bytes::Bytes;
# use futures_util::StreamExt;
# use std::error::Error;
# use std::time::Instant;

# #[tokio::main]
# async fn main() -> Result<(), Box<dyn Error>> {
let mut client = async_nats::connect("demo.nats.io").await?;

let mut subscriber = client.subscribe("foo".into()).await.unwrap();

while let Some(message) = subscriber.next().await {
println!("Received message {:?}", message);
}
#     Ok(())
# }