Simple-Ops Event Streaming. Build your real time applications without the headache of ops overhead.
⚠️ This project is in Alpha Stage: Expect breaking changes
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.
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 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).
- Rust and Cargo Installed
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
See more details here
- Cap N' Proto Installed
brew install capnp
- See this info for more installation instructions https://capnproto.org/install.html
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.
- Build the base Docker image
docker build -f images/RustBase.Dockerfile -t registry.nocaply.com/rust-base:latest .
- Build the docker images locally:
docker build -f images/Lucidmq.Dockerfile -t lucidmq:latest .
- Run the Docker Container
docker run -it -p 6969:6969 lucidmq:latest
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
MIT