https://github.com/andiradulescu/damaris

DaMariS - A Distributed Messaging System

https://github.com/andiradulescu/damaris

Science Score: 13.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.6%) to scientific vocabulary
Last synced: 9 months ago · JSON representation

Repository

DaMariS - A Distributed Messaging System

Basic Info
  • Host: GitHub
  • Owner: andiradulescu
  • Language: TypeScript
  • Default Branch: main
  • Homepage:
  • Size: 35.2 KB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created about 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme

README.md

DaMariS (Distributed Messaging System)

A scalable, fault-tolerant distributed messaging system.

Features

  • RESTful API: For submitting messages/jobs
  • Distributed Processing: Horizontally scalable with multiple workers
  • Fault Tolerant: Automatic job recovery and retries on worker failures
  • Job Status Tracking: Tracking of all jobs status

For detailed information about the system architecture, design decisions, and scalability considerations, please see ARCHITECTURE.md.

Architecture

The system consists of three main components:

  1. API Server: RESTful API for job submission and monitoring
  2. Job Queue (Redis): Distributes jobs to available workers using Bull
  3. Workers: Process jobs in parallel with automatic recovery

Quick Start

  1. Clone the repository

  2. Start the services using Docker Compose: bash docker-compose up -d

The API will be available at http://localhost:3000

Quick Demo Script

bash ./run-demo.sh

Both "Quick Start" and "Quick Demo Script" require Docker.

Prerequisites

  • Node.js
  • Redis

Development Setup

  1. Install dependencies: bash yarn

  2. Copy environment configuration: bash cp .env.example .env

  3. Start the api: bash yarn api

  4. Start a worker: bash yarn worker

API Documentation

Submit a Job

```http POST /jobs Content-Type: application/json

{ "type": "process_data", "data": { "input": "example input", "options": {} } } ```

Get Job Status

http GET /jobs/:jobId

List Jobs

http GET /jobs?status=completed&type=process_data&page=1&limit=10

Delete a Job

http DELETE /jobs/:jobId

Owner

  • Name: Andrei Radulescu
  • Login: andiradulescu
  • Kind: user
  • Location: Bucharest, Romania
  • Company: @NeobilitySRL

CTO @ Neobility

GitHub Events

Total
  • Push event: 11
  • Create event: 1
Last Year
  • Push event: 11
  • Create event: 1

Dependencies

package.json npm
  • @types/express ^5.0.1 development
  • @types/node ^22.13.11 development
  • ts-node-dev ^2.0.0 development
  • typescript ^5.8.2 development
  • bull ^4.16.5
  • dotenv ^16.4.7
  • express ^4.21.2
  • uuid ^11.1.0
yarn.lock npm
  • 173 dependencies