11 releases

✓ Uses Rust 2018 edition

0.0.15 Mar 22, 2020
0.0.13 Mar 17, 2020
Download history 49/week @ 2020-03-03 109/week @ 2020-03-10 340/week @ 2020-03-17 40/week @ 2020-03-24

157 downloads per month
Used in 2 crates

Custom license and MPL-2.0 licenses

10KB
222 lines

Build Status

Staged Event-Driven Architecture (SEDA) Bus

A form of message bus avoiding the high overhead of thread-based concurrency models where channels get their own inbound and outbound queues. The bus uses its own thread pool to route messages between queues. Addresses in Routes point to channel names. When used in conjunction with the Service Bus, the service bus acts as a layer above the message bus driving routing based on service operations and/or other logic which results in mappings to the lower message bus address.

Crates.io

!! WIP - not stable until version 1.0 !!

Design Goals

  • place the burden of queue checks on the clients for maximum scalability
  • non-persistence of messages for deniability
  • mark messages as consumed on consumption so that clients can continue on if synchronous
  • mark messages as completed on completion so that clients know when they can clear the queue if they wish
  • mark messages as errored with code on error so that clients can determine how they wish to handle it
  • use dbus for inter-process communications on Linux
  • use ipcd for inter-process communications on RedoxOS

Functionality

lib.rs

  1. Start Message Bus up with a name - Message bus instance creates a thread pool with Max Capacity of threads.
  2. Create Endpoints as needed using Message Bus.
  3. Start Message Bus

main.rs

  1. cargo install seda_bus
  2. copy seda_bus file to: /etc/init.d/seda_bus
  3. chmod +x /etc/init.d/seda_bus -v
  4. service seda_bus start

Dependencies

~2MB
~37K SLoC