NSQ Rust client Build Status Build status

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)

```rust 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>, }

impl Actor for MyReader { type Context = Context; fn started(&mut self, ctx: &mut Self::Context) { self.subscribe::(ctx, self.conn.clone()); } }

impl Handler for MyReader { fn handle(&mut self, msg: Msg, : &mut Self::Context) { println!("MyReader received {:?}", msg); self.conn.dosend(Fin(msg.id)); } }

fn main() { let sys = System::new("consumer"); let config = Config::default().clientid("consumer"); let c = Supervisor::start(|| Connection::new( "test", // <- topic "test", // <- channel "0.0.0.0:4150", // <- nsqd tcp address Some(config), // <- config (Optional) Some(2) // <- RDY (Optional default: 1) )); let conn = Arc::new(c); let _ = MyReader{ conn: conn.clone() }.start(); // <- Same thread reader let _ = Arbiter::start(|_| MyReader{ conn: conn }); // <- start another reader in different thread sys.run(); } ```

launch the reader

bash $ RUST_LOG=nsq-client=debug cargo run

Current features and work in progress

License

Licensed under * MIT license (see LICENSE or http://opensource.org/licenses/MIT)