{"id":17358157,"url":"https://github.com/filipecosta90/pubsub-bench","last_synced_at":"2026-05-06T07:34:32.565Z","repository":{"id":57573048,"uuid":"247843573","full_name":"filipecosta90/pubsub-bench","owner":"filipecosta90","description":"Estimate on how fast each Pub/Sub can process messages. Supports Redis pubsub and sharded pubsub","archived":false,"fork":false,"pushed_at":"2022-05-06T19:07:20.000Z","size":92,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"unstable","last_synced_at":"2025-02-01T19:44:33.496Z","etag":null,"topics":["pubsub","redis"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/filipecosta90.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":"2020-03-17T00:21:48.000Z","updated_at":"2022-05-02T22:11:02.000Z","dependencies_parsed_at":"2022-08-28T10:02:12.812Z","dependency_job_id":null,"html_url":"https://github.com/filipecosta90/pubsub-bench","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filipecosta90%2Fpubsub-bench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filipecosta90%2Fpubsub-bench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filipecosta90%2Fpubsub-bench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filipecosta90%2Fpubsub-bench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/filipecosta90","download_url":"https://codeload.github.com/filipecosta90/pubsub-bench/tar.gz/refs/heads/unstable","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245874634,"owners_count":20686807,"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":["pubsub","redis"],"created_at":"2024-10-15T19:04:37.753Z","updated_at":"2026-05-06T07:34:32.539Z","avatar_url":"https://github.com/filipecosta90.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n## Overview\n\nThis tool is meant to provide a rough estimate on how fast each Pub/Sub can process messages.\n\nWhen benchmarking a Pub/Sub Systems, we specifically require two distinct roles ( publishers and subscribers ) as benchmark participants - this repo contains code to mimic the publisher and subscriber workloads on Pub/Sub systems.\n\n\n**Current Pub/Sub Systems supported**:\n  - Redis Pub/Sub \n  - Redis Sharded Pub/Sub (since Redis \u003e= 7.0)\n\n\n\nSeveral aspects can dictate the overall system performance, like the:\n- Payload size (controlled on publisher)\n- Number of Pub/Sub channels (controlled on publisher)\n- Total message traffic per channel (controlled on publisher)\n- Number of subscribers per channel (controlled on subscriber)\n- Subscriber distribution per shard and channel (controlled on subscriber)\n\n## Getting started with docker\n\n### subscriber mode\n\n\n```bash\ndocker run --network=host codeperf/pubsub-bench:unstable pubsub-bench subscribe\n```\n\n### publisher mode\n```bash\ndocker run --network=host codeperf/pubsub-bench:unstable pubsub-bench publish\n```\n\n## Getting Started with prebuilt standalone binaries ( no Golang needed )\n\nIf you don't have go on your machine and just want to use the produced binaries you can download the following prebuilt bins:\n\n\n| OS | Arch | Link |\n| :---         |     :---:      |          ---: |\n| Linux   | amd64  (64-bit X86)     | [pubsub-bench-v0.1.0-linux-amd64.tar.gz](https://github.com/filipecosta90/pubsub-bench/releases/download/v0.1.0/pubsub-bench-v0.1.0-linux-amd64.tar.gz)    |\n| Linux   | arm64 (64-bit ARM)     | [pubsub-bench-v0.1.0-linux-arm64.tar.gz](https://github.com/filipecosta90/pubsub-bench/releases/download/v0.1.0/pubsub-bench-v0.1.0-linux-arm64.tar.gz)    |\n| Darwin   | amd64  (64-bit X86)     | [pubsub-bench-v0.1.0-darwin-amd64.tar.gz](https://github.com/filipecosta90/pubsub-bench/releases/download/v0.1.0/pubsub-bench-v0.1.0-darwin-amd64.tar.gz)    |\n| Darwin   | arm64 (64-bit ARM)     | [pubsub-bench-v0.1.0-darwin-arm64.tar.gz](https://github.com/filipecosta90/pubsub-bench/releases/download/v0.1.0/pubsub-bench-v0.1.0-darwin-arm64.tar.gz)    |\n\n\nHere's an example on how to use the above links for a linux based amd64 machine:\n\n```bash\n# Fetch it \nwget -c https://github.com/filipecosta90/pubsub-bench/releases/download/v0.1.0/pubsub-bench-v0.1.0-linux-amd64.tar.gz -O - | tar -xz\n\n# give it a try \n./pubsub-bench subscribe --help\n```\n\n## Getting Started building from source\n\n### Installing\nThis benchmark go program is **know to be supported for go \u003e= 1.17**. \nThe easiest way to get and install the benchmark Go programs is to use `go get` and then `go install`:\n\n```\ngo get github.com/filipecosta90/pubsub-sub-bench\ncd $GOPATH/src/github.com/filipecosta90/pubsub-sub-bench\nmake\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilipecosta90%2Fpubsub-bench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffilipecosta90%2Fpubsub-bench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilipecosta90%2Fpubsub-bench/lists"}