{"id":19226620,"url":"https://github.com/micro-tools/node-pohl","last_synced_at":"2025-04-21T00:32:51.293Z","repository":{"id":10806379,"uuid":"66952031","full_name":"micro-tools/node-pohl","owner":"micro-tools","description":"distributed redis queue messaging, makes sure that only a single instance actually works on the task, sequential callback implementation","archived":false,"fork":false,"pushed_at":"2022-04-14T05:07:34.000Z","size":203,"stargazers_count":4,"open_issues_count":6,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-01T07:24:21.552Z","etag":null,"topics":["callback-style","fast","messages","redis","sequential"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/micro-tools.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}},"created_at":"2016-08-30T15:10:45.000Z","updated_at":"2020-10-13T14:39:50.000Z","dependencies_parsed_at":"2022-08-07T06:00:35.615Z","dependency_job_id":null,"html_url":"https://github.com/micro-tools/node-pohl","commit_stats":null,"previous_names":["krystianity/node-pohl"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-tools%2Fnode-pohl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-tools%2Fnode-pohl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-tools%2Fnode-pohl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/micro-tools%2Fnode-pohl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/micro-tools","download_url":"https://codeload.github.com/micro-tools/node-pohl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248782280,"owners_count":21160716,"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","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":["callback-style","fast","messages","redis","sequential"],"created_at":"2024-11-09T15:19:33.191Z","updated_at":"2025-04-21T00:32:51.040Z","avatar_url":"https://github.com/micro-tools.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# node-pohl\n\n[![Build Status](https://travis-ci.org/krystianity/node-pohl.svg?branch=master)](https://travis-ci.org/krystianity/node-pohl)\n\n- reliable distributed rpc messages via redis in simple callback-style\n- ES6, coverage 66%+, lightweight, scalable \u0026 fast\n- uses pub \u0026 sub, but makes sure that only a single instance actually works on the task via redlock algorithm.\n- kind of rpc library that feels like making simple callbacks except for the fact that you can make them between services and not classes\n- simplistic circuit breaker to prevent timeout waves\n- metric events\n- pauseable receiver (.pause(), .resume()) for green/blue deployment scenarios\n\n#use case\n- image you have enterprise microservices that have to make rpc/rest/soap calls to dispatch other information during incoming requests\n- now think of the potential overhead that protocols like http can cause, you might most likely have to wait for 20-150ms overhead might depend on your infrastructure\n- there has to be a way to have a standing connection, that sends messages reliably, distributed, scalable and fast with a fixed overhead that can be calculated\n- all you need is a redis cluster/sentinel setup (works with single instance as well..), include this lib in your services and call 2 functions thats about it\n- message queuing, task locking, failovers or timeouts have been wrapped in a super simple callback-like syntax that also scales inside of your software to multiple topics and endless message/task types\n- overhead is between 3-5ms constantly\n- benchmarks hits 7500 rpc/s (full-roundtrip) on mobile i7 @ 2GHZ and Redis 3.2.1 single docker instance, with a single sender\n\n#how to use/install\n- `npm install pohl`\n- check ./example/index.js for a usage example\n- run example with `npm start`\n- run tests with `npm test` (requires localhost redis with default conf)\n- run benchmark with `npm run benchmark`\n\n#other\n- License: MIT\n- Author: Christian Fröhlingsdorf \u003cchris@5cf.de\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicro-tools%2Fnode-pohl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmicro-tools%2Fnode-pohl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmicro-tools%2Fnode-pohl/lists"}