https://github.com/andiradulescu/damaris
DaMariS - A Distributed Messaging System
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
Repository
DaMariS - A Distributed Messaging System
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
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:
- API Server: RESTful API for job submission and monitoring
- Job Queue (Redis): Distributes jobs to available workers using Bull
- Workers: Process jobs in parallel with automatic recovery
Quick Start
Clone the repository
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
Install dependencies:
bash yarnCopy environment configuration:
bash cp .env.example .envStart the api:
bash yarn apiStart 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
- Website: https://www.linkedin.com/in/andiradulescu/
- Twitter: andiradulescu
- Repositories: 7
- Profile: https://github.com/andiradulescu
CTO @ Neobility
GitHub Events
Total
- Push event: 11
- Create event: 1
Last Year
- Push event: 11
- Create event: 1
Dependencies
- @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
- 173 dependencies