Skip to content

LucidMQ - Simple Ops Event Streaming. Alternative to Kafka and RabbitMQ

License

Notifications You must be signed in to change notification settings

integrandio/lucidmq

Repository files navigation

LucidMQ

Simple-Ops Event Streaming. Build your real time applications without the headache of ops overhead.

DocumentationBlog

CI MIT License

⚠️ This project is in Alpha Stage: Expect breaking changes


What is LucidMQ

LucidMQ is a streaming platform that focuses on providing low configuration and low operation overhead along with speed. It enables the creation of stream or queue based applications by providing a rock solid foundation and simple API's. It is made up of multiple modules that are each documented in their own subdirectory.

Repo Structure

The repository is a monorepo with everything LucidMQ related. In the future some of these librarys may be split into their own repository. LucidMQ, LucidMQ-cli and it's storage system Nolan are all written in Rust. lucidmq-py and go-lucidmq provides client libraries for Python and Go respectively. These clients also have their own integration tests suites to do regression testing and verify correctness.

├── nolan          # The base library containing code for the commitlog
├── lucidmq        # Lucidmq broker and server
├── lucidmq-cli    # CLI client for interacting with lucidmq
├── lucidmq-py     # Python client library and integration tests
├── go-lucidmq     # Go client library and integration tests
└── protocol       # Cap N' Proto definition protocol used by client-server comunication

Getting Started

Getting started is easy. Just run a server instance of LucidMQ(either from soure or a docker container) and pick a client to interact with your server(CLI and Python Clients avaliable for now).

How to Run LucidMQ

Locally via Rust and Cargo

Requirements:

  1. Rust and Cargo Installed
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

See more details here

  1. Cap N' Proto Installed
brew install capnp

See the README in LucidMQ Directory for starting up the LucidMQ Server.

For a client to interact with your LucidMQ server instance, utilize the LucidMQ-CLI. Learn more at the README in that directory.

Docker

  1. Build the base Docker image
docker build -f images/RustBase.Dockerfile -t registry.nocaply.com/rust-base:latest .
  1. Build the docker images locally:
docker build -f images/Lucidmq.Dockerfile -t lucidmq:latest .
  1. Run the Docker Container
docker run -it -p 6969:6969 lucidmq:latest

Running the integration tests

LucidMQ's integration tests run on the pipeline via every push to main. During local development it may be useful to verify that things are working as intended. Luckily the test infrastructure in bundled in docker compose. This allows for the intrgration test architecture to be is extreamly portable and easy to use. There are integration test suites for each client library.

Pre-requisites:

  • Download and install docker
  • docker-compose also downloaded and installed

Run the python integration tests using the following command:

docker-compose -f docker-compose-python-integration.yml up --build --exit-code-from test-runner

Run the golang integration tests using the following command:

docker-compose -f docker-compose-go-integration.yml up --build --exit-code-from test-runner

License

MIT