NSQ Rust client

Sponsored by
A Actix based client implementation for the NSQ realtime message processing system.
Nsq-client it's designed to support by default multiple Readers for Multiple Connections, readers are routed per single connection by a round robin algorithm.
Examples
Simple Reader (SUB)
extern crate nsqueue;
extern crate actix;
use std::sync::Arc;
use actix::prelude::*;
use nsqueue::{Connection, Msg, Fin, Subscribe, Config};
struct MyReader {
pub conn: Arc<Addr<Connection>>,
}
impl Actor for MyReader {
type Context = Context<Self>;
fn started(&mut self, ctx: &mut Self::Context) {
self.subscribe::<Msg>(ctx, self.conn.clone());
}
}
impl Handler<Msg> for MyReader {
fn handle(&mut self, msg: Msg, _: &mut Self::Context) {
println!("MyReader received {:?}", msg);
self.conn.do_send(Fin(msg.id));
}
}
fn main() {
let sys = System::new("consumer");
let config = Config::default().client_id("consumer");
let c = Supervisor::start(|_| Connection::new(
"test", "test", "0.0.0.0:4150", Some(config), None, Some(2) ));
let conn = Arc::new(c);
let _ = MyReader{ conn: conn.clone() }.start(); let _ = Arbiter::start(|_| MyReader{ conn: conn }); sys.run();
}
launch nsqd
$ nsqd -verbose
launch the reader
$ RUST_LOG=nsq_client=debug cargo run
launch the producer
$ cargo run

Current features and work in progress
License
Licensed under