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 https://crates.io/crates/nats
For more information see https://nats.io/.
Examples
Below you can find some basic examples how to use this library.
For details, refer docs for specific method/struct.
Complete example
use bytes::Bytes;
use futures::StreamExt;
#[tokio::main]
async fn example() {
let 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<(), async_nats::Error> {
let 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::StreamExt;
# use std::error::Error;
# use std::time::Instant;
# #[tokio::main]
# async fn main() -> Result<(), Box<dyn Error>> {
let 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(())
# }