[−][src]Crate nsq_client
Nsq-client is the actix based client implementation of the nsq protocol.
This crate is intended as a swiss-knife base implementation for more complex nsq client applications, it supports even single or multiple connections, single or multiple async readers.
Due the actors model, readers and connections are distinct entities witch communicate each other throught messages, so one reader could receive messages from multiple connections and multiple connections could easily send messages to multiple readers.
Examples
use actix::prelude::*;
use nsq_client::{Connection, Msg, Subscribe, Fin};
struct MyReader{
conn: Arc<Addr<Connection>>,
};
impl Actor for MyReader {
type Context = Context<Self>;
fn started(&mut self, _: &mut Self::Context) {
self.subscribe::<Msg>(ctx, self.conn.clone());
}
}
impl Handler<Msg> for MyReader {
type Result = ();
fn handle(&mut self, msg: Msg, ctx: &mut Self::Context) {
let conn = msg.conn.clone();
let msg = msg.msg;
info!("MyReader received: {:?}", msg);
conn.do_send(Fin(msg.id));
}
}
Structs
Config | Configuration sent to nsqd to properly config the Connection |
Connection | Tcp Connection to NSQ system. |
Fin | Send FIN command to nsqd |
InFlight | Sent by Connection every time in_fligth is increased or decreased |
Msg | Message sent by nsqd |
Producer | |
Pub | |
Reqeue | Send REQ command to nsqd |
Touch | Send TOUCH command to nsqd (reset timeout for and in-flight message) |
Enums
Error |
Traits
Subscribe | Allows differents consumers to subscribe to the desired msgs sent by connections. |