{"id":17325507,"url":"https://github.com/matoking/ds-push-assignment","last_synced_at":"2025-08-26T02:11:42.312Z","repository":{"id":143748804,"uuid":"161049573","full_name":"Matoking/ds-push-assignment","owner":"Matoking","description":"A simple RabbitMQ work queue for a Distributed Systems course assignment","archived":false,"fork":false,"pushed_at":"2018-12-10T11:11:28.000Z","size":7,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-01T09:42:32.069Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Matoking.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":"2018-12-09T14:48:07.000Z","updated_at":"2018-12-10T11:11:29.000Z","dependencies_parsed_at":null,"dependency_job_id":"ddfd0664-d735-4788-9385-3ba656cad7a0","html_url":"https://github.com/Matoking/ds-push-assignment","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Matoking%2Fds-push-assignment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Matoking%2Fds-push-assignment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Matoking%2Fds-push-assignment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Matoking%2Fds-push-assignment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Matoking","download_url":"https://codeload.github.com/Matoking/ds-push-assignment/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245781786,"owners_count":20671109,"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":[],"created_at":"2024-10-15T14:13:36.388Z","updated_at":"2025-03-27T04:27:05.964Z","avatar_url":"https://github.com/Matoking.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# RabbitMQ Work Queue\n\nA simple RabbitMQ based work queue using a push architecture.\n\n# Description\n\nThe work queue uses the RabbitMQ message broker to transmit messages from the server to the client. Each message is ACK'd by the client before being removed from the message broker.\n\nThe following is done for each message:\n\n1. Server broadcasts a message to `test_queue` queue\n2. Client listens to the `test_queue` and receives a message.\n3. Client acknowledges the message, removing the message from the queue \n\nTo benchmark the performance of the message broker, the server broadcasts a set amount of equal-sized messages which are processed by the client.\n\nThe `benchmark.py` script starts the sender (`server.py`) and receiver (`client.py`) scripts in parallel and prints the time taken once both\nscripts have finished sending and receiving the messages.\n\n# Installation\n\nHow to install (assuming Virtualenv for Python 3 is installed and RabbitMQ is running)\n\n    $ virtualenv -p python3 venv\n    $ source venv/bin/activate\n    $ pip install -r requirements.txt\n    \nRun a benchmark and print the time to send and receive the messages\n\n    $ # Send 5,000 messages, each with a size of 500 kB and measure the time it takes to send and receive the messages\n    $ python benchmark.py --payload-size=500000 --payload-count=5000\n    \nRun client and server individually\n\n    $ python server.py --payload-size=500000 --payload-count=5000\n    $ # In another terminal\n    $ python client.py --payload-count=5000\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatoking%2Fds-push-assignment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatoking%2Fds-push-assignment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatoking%2Fds-push-assignment/lists"}