{"id":24329759,"url":"https://github.com/mangalaman93/pstickle","last_synced_at":"2026-04-25T07:32:41.478Z","repository":{"id":68880898,"uuid":"85407659","full_name":"mangalaman93/pstickle","owner":"mangalaman93","description":"Publish Subscribe System using ZMQ","archived":false,"fork":false,"pushed_at":"2017-03-21T14:41:32.000Z","size":50,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-12-25T19:12:58.545Z","etag":null,"topics":["pubsub","zmq"],"latest_commit_sha":null,"homepage":null,"language":"Python","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/mangalaman93.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}},"created_at":"2017-03-18T14:32:43.000Z","updated_at":"2017-03-20T11:36:53.000Z","dependencies_parsed_at":"2023-03-01T04:16:07.911Z","dependency_job_id":null,"html_url":"https://github.com/mangalaman93/pstickle","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mangalaman93/pstickle","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mangalaman93%2Fpstickle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mangalaman93%2Fpstickle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mangalaman93%2Fpstickle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mangalaman93%2Fpstickle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mangalaman93","download_url":"https://codeload.github.com/mangalaman93/pstickle/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mangalaman93%2Fpstickle/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32254623,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T04:23:17.126Z","status":"ssl_error","status_checked_at":"2026-04-25T04:21:53.360Z","response_time":59,"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":["pubsub","zmq"],"created_at":"2025-01-18T00:17:37.681Z","updated_at":"2026-04-25T07:32:41.472Z","avatar_url":"https://github.com/mangalaman93.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# pstickle\nPublish Subscribe System using ZMQ\n\n# How to Run\n```\n$ ./main.py\n```\n\n# System Architecture\n## System Components\n`pstickle` consists of 5 components (drops) as shown in the following figure:\n![Components](https://raw.githubusercontent.com/mangalaman93/pstickle/master/images/arch.jpg)\n\n## Flow of messages\nMessages are passed around using an intermediary `proxy`. It implements\nZMQ `XPUB` and `XSUB` sockets which can be connected from publishers and\nsubscribers. First, all subscribers send their respective subscriptions\nto the proxy. Proxy then, relays all the subscriptions to all the\npublishers. Publishers filter messages based on the received subscription\nand forwards them to correct subscribers through the proxy. Here, proxy\nallows us to dynamically add and remove publishers and subsribers to/form\nthe system.\n\nFollowing figure shows the flow of messages in the system:\n![Components](https://raw.githubusercontent.com/mangalaman93/pstickle/master/images/flow.jpg)\n\n## How to add new drops (components)\nSimply modify `main.py` and add more drops using the `Drop` class.\n\n## Limitations\n* `main.py` only runs on localhost\n* Doesn't stop cleanly on `ctrl+c`\n* Subscribers do not receive messages until the subscription has been completely processed by the publishers which can result in loss of messages\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmangalaman93%2Fpstickle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmangalaman93%2Fpstickle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmangalaman93%2Fpstickle/lists"}