PubSubRT - an industrial real-time pub/sub server

What is PSRT

PSRT is a real-time pub-sub protocol, optimized for industrial needs: providing low latency, dealing with slow channels and large payloads.

PSRT can process 100K+ messages on a single node with very low latencies (<1ms). Speeds are reasonable (1K+ ops/sec) even with enormous (1M+) payloads.

Why not MQTT?

We love MQTT. And we use MQTT a lot. There are cases where MQTT ideally fits requirements. However, for some it does not satisfy our speed and reliability needs and produces additional overhead. That is why we invented PSRT and use it as the primary protocol for EVA ICS in large enterprise setups.

What is the difference?

About the repository

This repository contains PubSubRT server, implementing PSRT (open-source version without the cluster module), command-line client and Rust client library.

Other repositories:

Installation

Use binaries from https://github.com/alttch/psrt/releases. For Debian/Ubuntu and other deb-based distros, *.deb packages can be used.

Build from source

shell cargo build --features server,cli --release

Example configuration files

If installed manually, get configuration files from https://github.com/alttch/psrt/tree/main/make-deb/etc/psrtd or use files from example-configs directory (need to be edited before use).

Authentication

PubSubRT uses the standard htpasswd format, use any htpasswd-compatible tool (with -B flag for bcrypt).

Statistical data

Users with admin rights can obtain statistical data using a web browser (by default, at http://localhost:2884).

The data can also be obtained in JSON for 3rd-party apps at:

shell curl http://localhost:2884/status

If the anonymous user has no admin rights, URI requires login and password (HTTP basic auth).

Cargo crate

https://crates.io/crates/psrt

Protocol specifications

https://github.com/alttch/psrt/blob/main/proto.md

Enterprise version

Download packages from https://get.eva-ics.com/psrt-enterprise/