DISCLAIMER: This codebase does not implement all of ZeroMQ's feature set.
ZeroMQ is a high-performance asynchronous messaging library that provides many popular messaging patterns for many transport types. They look and feel like Berkeley style sockets, but are fault tolerant and easier to use. This project aims to provide a native rust alternative to the reference implementation, and leverage Rust's async ecosystem.
Basic ZMTP implementation is working and tested against the reference implementation.
- TCP
- IPC (unix only)
- Request/Response (REQ, REP, DEALER, ROUTER)
- Publish/Subscribe (PUB, SUB)
- Pipeline (PUSH, PULL)
See the examples for some ways to get up and running quickly. You can also generate the documentation by doing cargo doc --open
on the source code.
The project currently supports tokio
, async-std
, and async-dispatcher
controllable via feature flags. tokio
is used by default. If you want to use async-std
, you would disable the default features, and then select the async-std-runtime
feature. For example in your Cargo.toml
, you might specify the dependency as follows:
zeromq = { version = "*", default-features = false, features = ["async-std-runtime", "all-transport"] }
See the section about feature flags for more info.
Feature flags provide a way to customize the functionality provided by this library. Refer to the cargo guide for more info.
Features:
- (default)
tokio-runtime
: Usetokio
as your async runtime. async-std-runtime
: Useasync-std
as your async runtime.async-dispatcher-runtime
: Useasync-dispatcher
as your async runtime.- (default)
all-transport
: Enable all the*-transport
flags ipc-transport
: Enable IPC as a transport mechanismtcp-transport
: Enable TCP as a transport mechanism
Contributions are welcome! See our issue tracker for a list of the things we need help with.
You can ask quesions in our Discord channel - https://discord.gg/pFXSqWtjQT