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. 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.
!! WIP - not stable until version 1.0 !!
Design Goals
- non-persistence of messages for deniability by default
- 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
- Start Message Bus up with a name - Message bus instance creates a thread pool with Max Capacity of threads.
- Create Endpoints as needed using Message Bus.
- Start Message Bus
main.rs
- cargo install seda_bus
- copy seda_bus file to: /etc/init.d/seda_bus
- chmod +x /etc/init.d/seda_bus -v
- service seda_bus start