Juliacon 2024

Rembus.jl: a Pub/Sub and Remote Procedure Call middleware
07-12, 14:30–15:00 (Europe/Amsterdam), Else (1.3)

The talk will be about Rembus: a new package for implementing distributed applications using a pub/sub communication style and/or a RPC communication style.

Rembus integrates into a single middleware the Publish/Subscribe and the Remote Procedure Call pattern: this is a unique feature amongst similar existing solutions (for example kafka, MQTT, grpc).


Rembus targets microservices oriented enterprise systems.

Main goals are:
- Make it easy implementing distributed applications avoiding the boilerplate of connections management.
- Overall performance.
- Broker and broker-less architecture.
- Exchange primitive types but also binary data and Dataframes objects between components.

Rembus leverages Julia's metaprogramming capabilities to propose a novel API approach for transforming a function into a "distributed" function, for example:

Pub/Sub: 1 publisher and N subscribers

The application "publisher" produces a message:

@component "publisher"
@publish mytopic(arg1, arg2, arg3)

NOTE: arguments arg1, arg3, arg3 are encoded as the data content of the published message with topic mytopic.

The application "consumer1" subscribes to the topic mytopic:

@component "consumer1"

# invoked for each received message on topic mytopic
function mytopic(arg1, arg2, arg3)
    # body
end

@subscribe mytopic   # declare interest to topic mytopic

The same hold true for "consumer2" .. "consumerN" applications each of them with specific body implementation of mytopic method.

Talk outline

The talk session will be organized as follows:

  • Introduction: motivations and Rembus main features.
  • Fault-tolerance features: brief explanation of a non trivial use of Visor.jl
  • How to implements pub-sub and RPC systems with Rembus: code examples.
  • Demo: exchanging dataframes between Julia, Python and Rust.
  • Q&A
See also: Rembus slides (5.6 MB)

Senior Software Architect at TIM