BUS/RT® is a rust-native IPC broker, written in Rust/Tokio, inspired by NATS, ZeroMQ and Nanomsg. BUS/RT is fast, flexible and very easy to use.
The library can be embedded in any Rust project or be used as a standalone server.
BUS/RT is the core bus of EVA ICS v4
The name "BUS/RT" is also only the working one, after the official release the bus will be renamed, as well as its crates, bindings and modules.
The following communication patterns are supported out-of-the-box:
The following channels are supported:
In addition to Rust, BUS/RT has also bindings for the following languages:
Rust crate: https://crates.io/crates/busrt
A client should register with a name "group.subgroup.client" (subgroups are optional). The client's name can not start with dot (".", reserved for internal broker clients) if registered via IPC.
The client's name must be unique, otherwise the broker refuses the registration.
Broadcast messages are sent to multiple clients at once. Use "?" for any part of the path, "*" as the ending for wildcards. E.g.:
"?.test.*" - the message is be sent to clients "g1.test.client1", "g1.test.subgroup.client2" etc.
Use MQTT-format for topics: "+" for any part of the path, "#" as the ending for wildcards. E.g. a client, subscribed to "+/topic/#" receives publications sent to "x/topic/event", "x/topic/sub/event" etc.
An optional included RPC layer for one-to-one messaging can be used. The layer is similar to JSON RPC but is optimized for byte communications.
BUS/RT has a very simple optional security model in favor of simplicity and speed. Also, BUS/RT is not designed to work via unstable connections, all clients should be connected either from the local machine or using high-speed reliable local network communications.
If you need a pub/sub server for a wide area network, try PSRT.
See examples folder.
ignore
cargo build --features server,rpc
The "rpc" feature is optional. When enabled for the server, it allows to initialize the default broker RPC API, spawn fifo servers, send broker announcements etc.
CPU: i7-7700HQ
Broker: 4 workers, clients: 8, payload size: 100 bytes, local IPC (single unix socket), totals:
| stage | iters/s | |--------------------------|-------------| | rpc.call | 126_824 | | rpc.call+handle | 64_694 | | rpc.call0 | 178_505 | | send+recv.qos.no | 1_667_131 | | send+recv.qos.processed | 147_812 | | send.qos.no | 2_748_870 | | send.qos.processed | 183_795 |
Bohemia Automation / Altertech is a group of companies with 15+ years of experience in the enterprise automation and industrial IoT. Our setups include power plants, factories and urban infrastructure. Largest of them have 1M+ sensors and controlled devices and the bar raises higher and higher every day.