Rembus
The lean messaging middleware
The goal of Rembus is to be a messaging middleware for systems where the mains building blocks are scientific computing and components decoupling using microservices architectural patterns.
It is written in Julia but designed to exchange messages between components implemented in other languages.
It is a fresh approach to messaging: instead of requiring buffers or streams of bytes and loading the application with encoding/decoding tasks it accepts primitive types, dictionaries, lists and dataframes types through a thin API.
RPC
Rembus provides the request/reply pattern where a component request a service and another component implements and exposes such service.
There may be multiple components exposing the same service and different logics for routing the request to a specific server, implementing fail-over or balancing features.
Publish/Subscribe
One component produce a message and one or many interested subscribers receive it.
When a component goes online again if the retroactive feature is enabled the component receives the messages published when it was offline.
Brokerless
In a simple scenario or where a Broker may be redundant or tought as a single point of failure a brokerless architecture consents peer to peer comunication between components.
DataFrames support
Rembus uses the Arrow columnar format to transport dataframes messages between components.
Julia, Python and Rust components may exchange dataframes betweeen DataFrames.jl, Pandas and Polars libraries.