use std::env;
#[tokio::main]
async fn main() -> Result<(), async_nats::Error> {
let local_addr: std::net::SocketAddr = env::args()
.nth(1)
.unwrap_or_else(|| "127.0.0.1:0".to_string())
.parse()
.expect("invalid socket address, expected format: IP:PORT (e.g. 127.0.0.1:0)");
let nats_url = env::args()
.nth(2)
.unwrap_or_else(|| "nats://localhost:4222".to_string());
println!("Connecting to {nats_url} using local address {local_addr}");
let client = async_nats::ConnectOptions::new()
.local_address(local_addr)
.connect(&nats_url)
.await?;
client
.publish("local_address.test", "Hello from bound address!".into())
.await?;
client.flush().await?;
println!("Published a message successfully from {local_addr}");
Ok(())
}