Skip to content

Welcome to Danube Pub/Sub messaging docs

Danube is an open-source, distributed messaging broker platform, developed in Rust.

Danube aims to be a lightweight yet powerful, secure and scalable messaging platform, suitable for event-driven applications. Allows single or multiple producers to publish messages on the topics and multiple consumers, using the subscription models, to consume the messages from the topics.

Inspired by the Apache Pulsar messaging and streaming platform, Danube incorporates some similar concepts but is designed to carve its own path within the distributed messaging ecosystem. For additional design considerations, please refer to the Danube Architecture section.

Core Capabilities of the Danube Messaging Platform

  • Topics: A unit of storage that organizes messages into a stream.
  • Non-partitioned topics: Served by a single broker.
  • Partitioned topics: Divided into partitions, served by different brokers within the cluster, enhancing scalability and fault tolerance.
  • Message Dispatch:
  • Non-reliable Message Dispatch: Messages reside in memory and are promptly distributed to consumers, ideal for scenarios where speed is crucial. The acknowledgement mechanism is ignored.
  • Reliable Message Dispatch: The acknowledgement mechanism and persistent storage is used to ensure guaranteed message delivery.
  • Subscription Types::
  • Supports various subscription types (Exclusive, Shared, Failover) enabling different messaging patterns such as message queueing and pub-sub.
  • Flexible Message Schemas
  • Supports multiple message schemas (Bytes, String, Int64, JSON) providing flexibility in message format and structure.

Crates within the Danube workspace

Danube Broker core crates:

Danube CLIs and client library:

  • danube-client - An async Rust client library for interacting with Danube messaging system
  • danube-cli - Client CLI to handle message publishing and consumption
  • danube-admin-cli - Admin CLI designed for interacting with and managing the Danube cluster

Danube client libraries

Contributions in other languages, such as Python, Java, etc., are greatly appreciated.