Utilizzare ZeroMQ con Rust

Mattepuffo's logo
Utilizzare ZeroMQ con Rust

Utilizzare ZeroMQ con Rust

ZeroMQ è una libreria per lo scambio di messaggi tra un client ed un server di tipo brokerless!

Sostanzialmente vuol dire che nella libreria è già incluso tutto quello che ci serve, senza altre configurazioni.

In questo articolo vediamo un esempio di utilizzo in Rust.

Per usarlo possiamo aggiungere la dipendenza al Cargo.toml:

[dependencies]
zmq = "0.10.0"

Questo un esempio di server:

use std::thread;
use std::time::Duration;

fn main() {
    let context = zmq::Context::new();
    let responder = context.socket(zmq::REP).unwrap();

    println!("SERVER AVVIATO!");
    assert!(responder.bind("tcp://*:5555").is_ok());

    let mut msg = zmq::Message::new();
    loop {
        responder.recv(&mut msg, 0).unwrap();
        println!("Ricezione messaggio {}", msg.as_str().unwrap());
        thread::sleep(Duration::from_millis(1000));
        responder.send("CIAO DAL SERVER!", 0).unwrap();
    }
}

Per testarlo possiamo usare diversi client ovviamente.

Qui sotto vi lascio un esempio in Python:

import zmq

print("CONNESSIONE Al SERVER")

context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect("tcp://localhost:5555")

for request in range(5):
    print(f"Invio testo {request}")
    socket.send(b"CIAO DAL CLIENT!")

    testo = socket.recv()
    print(f"Ricezione risposta {request} [ {testo} ]")

Enjoy!


Condividi

Commentami!