{"id":22907334,"url":"https://github.com/tripolskypetr/node-redis-grpc-stream-queue","last_synced_at":"2026-02-13T13:54:51.293Z","repository":{"id":266715735,"uuid":"899014030","full_name":"tripolskypetr/node-redis-grpc-stream-queue","owner":"tripolskypetr","description":"Enables reliable bidirectional gRPC streaming with automatic retries, message queuing, error handling, and logging, supporting real-time communication between distributed services in a robust and fault-tolerant manner.","archived":false,"fork":false,"pushed_at":"2025-01-21T19:48:32.000Z","size":13444,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-01T21:53:17.212Z","etag":null,"topics":["benchmark","fault-tolerant","fault-tolerant-microservices","grpc","in-memory","nodejs","playwright","queue","realtime","redis","redis-cache","streaming","stress-testing","tests","websocket"],"latest_commit_sha":null,"homepage":"https://github.com/react-declarative/react-declarative","language":"TypeScript","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/tripolskypetr.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":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-12-05T13:13:26.000Z","updated_at":"2025-01-21T19:48:35.000Z","dependencies_parsed_at":"2024-12-11T14:32:12.190Z","dependency_job_id":"e7feb2e5-bbdd-45eb-a8e0-1d9b7d66ba21","html_url":"https://github.com/tripolskypetr/node-redis-grpc-stream-queue","commit_stats":null,"previous_names":["tripolskypetr/node-grpc-stream-queue","tripolskypetr/node-redis-grpc-stream-queue"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tripolskypetr/node-redis-grpc-stream-queue","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tripolskypetr%2Fnode-redis-grpc-stream-queue","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tripolskypetr%2Fnode-redis-grpc-stream-queue/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tripolskypetr%2Fnode-redis-grpc-stream-queue/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tripolskypetr%2Fnode-redis-grpc-stream-queue/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tripolskypetr","download_url":"https://codeload.github.com/tripolskypetr/node-redis-grpc-stream-queue/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tripolskypetr%2Fnode-redis-grpc-stream-queue/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275358838,"owners_count":25450443,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-16T02:00:10.229Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["benchmark","fault-tolerant","fault-tolerant-microservices","grpc","in-memory","nodejs","playwright","queue","realtime","redis","redis-cache","streaming","stress-testing","tests","websocket"],"created_at":"2024-12-14T03:14:34.619Z","updated_at":"2025-09-16T03:47:29.339Z","avatar_url":"https://github.com/tripolskypetr.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🔥 node-redis-grpc-stream-queue\n\n\u003e Enables reliable bidirectional gRPC streaming with automatic retries, message queuing, error handling, and logging, supporting real-time communication between distributed services in a robust and fault-tolerant manner.\n\n![schema](./assets/schema.png)\n\nWhile the server or the client offline, the message buffering to the queue. After reconnect, all of them will be senden in the order of emit. The architecture expect each part of the chain can be restarted separately. Also, when you need, that software design allows to attach the queue to the Redis which will make system to restore it's state even after complete shut down\n\n## Benchmark\n\n\u003e After setting up all the following test cases you can use the Playwright benchmark\n\n![playwright-benchmark](./assets/playwright-benchmark.gif)\n\n**Running**\n\n```bash\nnpm run install:playwright\nnpm run test\n```\n\n## Test case 1: console-grpc-streaming\n\n\u003e Console apps which stream events to each other through gRPC (**console**)\n\n![grpc-queue](./assets/grpc-queue.gif)\n\n**Setup**\n\n```bash\nnpm install\nnpm run build\ncd modules/remote-redis/docker\ndocker-compose up -d\n```\n\n**Running**\n\n```bash\nnpm run start:msg-client\nnpm run start:msg-server\n```\n\n## Test case 2: sse-grpc-streaming\n\n\u003e HTTP/2 Server-Sent Events frontend app which recieves messages from gRPC service (**Require HTTPS**)\n\n![sse-queue](./assets/sse-queue.gif)\n\n**Setup**\n\n```bash\nnpm install\nnpm run build\nmkdir ssl\ncd ssl\nmkcert localhost # choco install mkcert\ncd modules/remote-redis/docker\ndocker-compose up -d\n```\n\n**Running**\n\n```bash\nnpm run start:msg-server\nnpm run start:host-sse\nnpx -y open-cli https://localhost\n```\n\n## Test case 3 ws-grpc-streaming\n\n\u003e WebSocket frontend app which recieves messages from gRPC service (**HTTPS/HTTP**)\n\n![ws-queue](./assets/ws-queue.gif)\n\n**Setup**\n\n```bash\nnpm install\nnpm run build\ncd modules/remote-redis/docker\ndocker-compose up -d\n```\n\n**Running**\n\n```bash\nnpm run start:msg-server\nnpm run start:host-ws\nnpx -y open-cli http://localhost\n```\n\n## Example of connection reestablishment with PM2\n\n```bash\nnpm install -g pm2\npm2 start ./ecosystem.config.js\nnpx -y open-cli http://localhost\npm2 stop msg-server\npm2 start msg-server\npm2 kill\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftripolskypetr%2Fnode-redis-grpc-stream-queue","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftripolskypetr%2Fnode-redis-grpc-stream-queue","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftripolskypetr%2Fnode-redis-grpc-stream-queue/lists"}