6个版本 (破坏性更新)
0.5.0 | 2019年6月18日 |
---|---|
0.4.0 | 2018年12月23日 |
0.3.1 | 2018年11月18日 |
0.2.0 | 2018年11月14日 |
0.1.0 | 2018年11月12日 |
#1179 in 异步
在 2 crate中使用了
105KB
2K SLoC
Futures ZMQ
此crate包含围绕ZeroMQ概念的Futures包装器。它与tokio-zmq共享外部API,但与tokio-zmq不同,futures-zmq是OS和Executor无关的。这以性能为代价,因为futures-zmq依赖于启动单独的线程来管理ZeroMQ套接字,而tokio-zmq可以通过让mio管理套接字来避免这个问题。
当前支持的套接字
- REP
- REQ
- PUB
- SUB
- PUSH
- PULL
- XPUB
- XSUB
- PAIR
- DEALER
- ROUTER
查看示例文件夹以获取使用示例。
注意:这些示例使用Tokio,但此crate不需要tokio的运行时。任何futures执行器都应该可以工作。
入门
futures = "0.1.25"
futures-zmq = "0.5"
tokio = "0.1"
zmq = "0.9.1"
在你的应用程序中
use std::sync::Arc;
use futures::{Future, Stream};
use futures_zmq::{prelude::*, Rep};
fn main() {
let ctx = Arc::new(zmq::Context::new());
let rep_fut = Rep::builder(ctx).bind("tcp://*:5560").build();
let runner = rep_fut.and_then(|rep| {
let (sink, stream) = rep.sink_stream(25).split();
stream
.map(|multipart| {
// handle the Multipart
// This example simply echos the incoming data back to the client.
multipart
})
.forward(sink)
});
tokio::run(runner.map(|_| ()).or_else(|e| {
println!("Error: {:?}", e);
Ok(())
}));
}
运行示例
req.rs
和 rep.rs
示例旨在一起使用。 rep
示例使用REP套接字启动服务器,而 req
示例使用REQ套接字查询该服务器。
zpub.rs
和 sub.rs
示例应一起使用。zpub
生成值,这些值由 sub
消费。
push.rs
、pull_push.rs
和 pull.rs
文件应一起使用。push
生成值,这些值由 pull_push
传递到 pull
,它消费这些值并向自身和 pull_push
发送停止信号。
sync_pubsub.rs
、dealer_router.rs
和 load_balancing_broker
都是自包含的,并启动多个线程。
贡献
请随意为任何发现的问题提交问题。请注意,任何贡献的代码都将根据GPLv3许可。
许可证
版权所有 © 2018 Riley Trautman
Futures ZMQ 是免费软件:您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它,许可证版本为3,或(根据您的选择)许可证的任何较新版本。
未来ZMQ以供分发,希望它对您有所帮助,但没有任何保证;甚至没有关于商销或特定用途适用性的暗示性保证。有关更多详细信息,请参阅GNU通用公共许可证。此文件是未来ZMQ的一部分。
您应该已经收到了与未来ZMQ一起的GNU通用公共许可证副本。如果没有,请参阅http://www.gnu.org/licenses/。
依赖项
~2.5MB
~56K SLoC