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.
To use nsq-client, add this to your Cargo.toml:
toml
[dependencies]
actix = "0.7"
nsq-client = "0.1.12"
In order to use nsq-client you first need to create a Reader actor which implement Handler for the type of messages you want to receive from the connections and then subscribe it to the connections to be able to receive the type of messages you've selected.
Available messages are: - Msg - InFlight - OnIdentify - OnAuth - OnClose - OnBackoff - OnResume
```rust extern crate actix; extern crate nsq_client;
use std::sync::Arc;
use actix::prelude::*;
use nsq_client::{Connection, Msg, Fin, Subscribe, Config};
struct MyReader {
pub conn: Arc
impl Actor for MyReader {
type Context = Context
impl Handler
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) None, // secret for Auth (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(); } ```
bash
$ nsqd -verbose
bash
$ RUST_LOG=nsq_client=debug cargo run
bash
$ cargo run
Licensed under * MIT license (see LICENSE or http://opensource.org/licenses/MIT)