rustzmq2 0.1.0

A native async Rust implementation of ZeroMQ
Documentation
// 04_pubsub_server — PUB socket fanning random weather samples to subscribers.
//
// Each sample is a single frame "<zipcode> <temperature> <humidity>". PUB has
// no flow control: late joiners miss past messages, slow subscribers drop
// frames once their HWM fills. Run alongside 04_pubsub_client.
use rand::RngExt;
use std::time::Duration;

use rustzmq2::prelude::*;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut rng = rand::rng();
    println!("Start server");
    let mut socket = rustzmq2::PubSocket::new();
    socket.bind("tcp://127.0.0.1:5556").await?;

    println!("Start sending loop");
    loop {
        let zipcode = rng.random_range(10000..10010);
        let temperature = rng.random_range(-80..135);
        let relhumidity = rng.random_range(10..60);
        socket
            .send(format!("{} {} {}", zipcode, temperature, relhumidity))
            .await?;
        tokio::time::sleep(Duration::from_millis(100)).await;
    }
}