{"id":17781653,"url":"https://github.com/melyouz/risala","last_synced_at":"2026-04-28T11:05:25.615Z","repository":{"id":258788997,"uuid":"857671560","full_name":"melyouz/risala","owner":"melyouz","description":"(WiP) gRPC based Message Broker written in Go for self learning purpose","archived":false,"fork":false,"pushed_at":"2024-11-24T13:44:12.000Z","size":167,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T19:55:21.962Z","etag":null,"topics":["broker","go","golang","grpc","message","queue"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/melyouz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":"roadmap.svg","authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-09-15T09:43:17.000Z","updated_at":"2024-11-24T13:44:16.000Z","dependencies_parsed_at":"2024-11-08T00:21:04.775Z","dependency_job_id":"d8f5a86d-f862-4f79-8e59-dc5ab799bb60","html_url":"https://github.com/melyouz/risala","commit_stats":{"total_commits":34,"total_committers":1,"mean_commits":34.0,"dds":0.0,"last_synced_commit":"fc7cef6c9d5f43ffcd6bae102c11458c218a79c2"},"previous_names":["melyouz/risala"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/melyouz/risala","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melyouz%2Frisala","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melyouz%2Frisala/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melyouz%2Frisala/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melyouz%2Frisala/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/melyouz","download_url":"https://codeload.github.com/melyouz/risala/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/melyouz%2Frisala/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32377599,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T09:24:15.638Z","status":"ssl_error","status_checked_at":"2026-04-28T09:24:15.071Z","response_time":56,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["broker","go","golang","grpc","message","queue"],"created_at":"2024-10-27T04:03:53.336Z","updated_at":"2026-04-28T11:05:25.589Z","avatar_url":"https://github.com/melyouz.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Risala\n\ngRPC based Message Broker written in Go for self learning purpose.\n\n## Running Locally\n\nFollow these steps to run the project on your local machine:\n\n1. **Install Go v1.23**  \n   Ensure that Go v1.23 is installed. You can download it from [go.dev](https://go.dev/).\n\n2. **Run the Broker**  \n   Start the broker with sample data by navigating to the project directory and running:\n\n   ```bash\n   cd broker \u0026\u0026 make run WITH_SAMPLE_DATA=1\n   ```\n\n3. **Run the Producer**\n\n   Navigate to the project directory and run the following command to start the producer (adjust EVENTS_COUNT to control the number of generated events):\n   ```bash\n   cd producer \u0026\u0026 make run EVENTS_COUNT=1000\n   ```\n\n4. **Run the consumer**\n\n   Navigate to the project directory and run the following command to start the consumer:\n   ```bash\n   cd consumer \u0026\u0026 make run\n   ```\n\n\u003e Note: You can run multiple instances of Producers and Consumers.\n\n\u003e UI: Currently, there is no available UI.\n\n## API Documentation\n\n1. **Run the Broker**  \n   Start the broker with sample data by navigating to the project directory and running:\n\n   ```bash\n   cd broker \u0026\u0026 make run WITH_SAMPLE_DATA=1\n   ```\n\n2. Navigate to [API Documentation](http://localhost:8000/api/v1/docs/index.html) (Swagger UI).\n\n## Roadmap\n\n![Roadmap image](https://github.com/melyouz/risala/blob/main/roadmap.svg?raw=true)\n\n* v1.0.0 ([released](https://github.com/melyouz/risala/releases/tag/v1.0.0))\n* v1.1.0\n  + Broker\n      * Publish messages (gRPC).\n      * Consume messages (gRPC).\n      * Acknowledge messages (gRPC).\n      * Negatively acknowledge messages (gRPC).\n  + Producer\n    * Publish messages (gRPC).\n  + Consumer\n    * Consume messages (gRPC).\n    * Acknowledge messages (gRPC).\n    * Negatively acknowledge messages (gRPC).\n* Further versions (TBD)\n  + Broker\n    * Retry mechanism.\n    * Persistence layer (TBD).\n    * More exchange types\n      * Fanout: Route messages to all bound in queues (existing from MVP).\n      * Direct: Route messages to bound in queues matching exact routing key (e.g. event.product.create.v1).\n      * Topic: Route messages to bound in queues matching wildcard routing key (e.g. #, event.product.#,\n        event.product.*.v1, ...).\n    * More queue types\n      * Transient: Temporary in memory queue (existing from MVP).\n      * Durable: Persisted queue.\n    * More binding types:\n      * To queue (existing from MVP).\n      * To exchange: Route messages to another exchange.\n    * Tracing (e.g. Zipkin).\n    * Logging (e.g. Vector + Grafana Loki, Datadog, ...).\n  + Consumer\n    * Tracing.\n    * Logging.\n  + Producer\n    * Tracing.\n    * Logging.\n\n## Suggestions\n\nAny suggestion/recommendation? Just let me know! I appreciate it in advance 😊\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmelyouz%2Frisala","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmelyouz%2Frisala","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmelyouz%2Frisala/lists"}