This readme is for the 0.4.0 beta, for the 0.3.1 readme, look here
This crate contains wrappers around ZeroMQ Concepts with Futures.
Currently Supported Sockets - REP - REQ - PUB - SUB - PUSH - PULL - XPUB - XSUB - PAIR - DEALER - ROUTER
See the examples folder for usage examples.
Add the following to your Cargo.toml (As of the futures 0.2.0 stable release, Tokio does not support
futures2. It does have support for futures 0.2.0-beta, so pinning that version of futures is
important)
toml
zmq = "0.8"
tokio-zmq = "0.4.0-beta3"
futures = "=0.2.0-beta"
tokio = "0.1"
In your application: ```rust use std::sync::Arc; use std::convert::TryInto;
use futures::{FutureExt, StreamExt}; use tokiozmq::prelude::*; use tokiozmq::{Rep, Socket};
fn main() { let ctx = Arc::new(zmq::Context::new()); let rep: Rep = Socket::builder(ctx) .bind("tcp://*:5560") .try_into() .unwrap();
let (sink, stream) = rep.sink_stream().split();
let runner = stream
.map(|multipart| {
// handle the Multipart
// This example simply echos the incoming data back to the client.
multipart
})
.forward(sink);
tokio::runtime::run2(runner.map(|_| ()).or_else(|e| {
println!("Error: {:?}", e);
Ok(())
}));
} ```
The req.rs
and rep.rs
examples are designed to be used together. The rep
example starts a server with a REP socket, and the req
example queries that server with a REQ socket.
The zpub.rs
and sub.rs
examples should be used togheter. zpub
produces values that sub
consumes.
The push.rs
, pull_push.rs
, and pull.rs
files should be used together. push
produces values, which are relayed by pull_push
to pull
, which consumes them and sends a stop signal to itself and to pull_push
.
sync_pubsub.rs
, dealer_router.rs
, and load_balancing_broker
are all self-contained, and spawn multiple threads.
Feel free to open issues for anything you find an issue with. Please note that any contributed code will be licensed under the GPLv3.
Copyright © 2017 Riley Trautman
Tokio ZMQ is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Tokio ZMQ is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. This file is part of Tokio ZMQ.
You should have received a copy of the GNU General Public License along with Tokio ZMQ. If not, see http://www.gnu.org/licenses/.