use rand::RngExt;
use rustzmq2::prelude::*;
use std::time::Duration;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut rng = rand::rng();
let stocks: Vec<&str> = vec!["AAA", "ABB", "BBB"];
println!("Starting server");
let mut socket = rustzmq2::PubSocket::new();
socket.bind("tcp://127.0.0.1:5563").await?;
println!("Start sending loop");
loop {
for stock in &stocks {
let price: u32 = rng.random_range(1..100);
let mut m: ZmqMessage = ZmqMessage::from(*stock);
m.push_back(price.to_ne_bytes().to_vec());
println!("Sending: {:?}", m);
socket.send(m).await?;
}
tokio::time::sleep(Duration::from_secs(1)).await;
}
}