patterns-0.1.0: Common patterns in message-oriented applications

Safe HaskellNone




Majordomo Service Broker


The Majordomo Pattern

The Majordomo pattern defines a communication protocol between clients and servers based on a service broker that provides

  • A central access point for all services
  • A service infrastructure for services like service discovery, configurations, data storage, etc.
  • Reliable communication based on heart-beats.

The broker package does not provide a pre-defined borker, i.e. it does not contain an application. Instead, it provides APIs that can be used to build brokers, even within the same process as clients and workers.

The present module provides a convenience reexport of the three modules, making up the majordomo pattern: server, client and broker. There is also a "common" module with definitions relevant for all three parties.

Majordomo 'Worker'

The server module contains the server-side of the majordomo pattern. Majordomo servers look like ordinary servers, but use a different protocol for communicating with the broker intervening between clients and servers.

Majordomo 'Client'

The client module contains the client-side of the majordomo pattern. Majordomo clients look very similar to ordinary clients, but use a different protocol for communicating with the broker intervening between clients and servers. The code provided to a majordomo clients, however, is exactly the same as the code provided to an ordinary client.

Majordomo 'Broker'

The broker module contains the broker code. The broker is implemented by means of streams, very similar to servers and clients. The functionality provided by the broker module can be used to implement a standalone broker or an in-process broker linked with its clients and servers. Note, however, that brokers must not share the same process with other brokers, since, internally, the broker module uses a global registry, which would be shared among all brokers in the same process as well.

Majordomo common definitions

The "common" module contains protocol building blocks and MDP-specific exceptions.