use std::time::Duration;
use ruststream::runtime::{AppInfo, RustStream};
use ruststream::{IncomingMessage, OutgoingMessage, RequestReply};
use ruststream_nats::{NatsBroker, NatsError};
#[ruststream::app]
fn app() -> RustStream {
let broker = NatsBroker::new("nats://localhost:4222");
let requester = broker.publisher();
RustStream::new(AppInfo::new("requester", "0.1.0"))
.after_startup(move |_state| async move {
let reply = requester
.request(
OutgoingMessage::new("questions", b"what is the answer?"),
Duration::from_secs(2),
)
.await?;
println!("reply: {}", String::from_utf8_lossy(reply.payload()));
Ok::<_, NatsError>(())
})
.register_broker(broker)
}