{"id":24737464,"url":"https://github.com/engineersbox/rust-mqtt","last_synced_at":"2026-04-29T11:04:39.659Z","repository":{"id":109327969,"uuid":"367382209","full_name":"EngineersBox/Rust-MQTT","owner":"EngineersBox","description":"An MQTT pub/sub with built in analyser","archived":false,"fork":false,"pushed_at":"2021-05-30T10:30:55.000Z","size":58,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-22T17:44:51.966Z","etag":null,"topics":["analyser","mqtt","publish-subscribe","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EngineersBox.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2021-05-14T14:08:10.000Z","updated_at":"2021-05-30T10:30:57.000Z","dependencies_parsed_at":"2023-04-28T01:33:18.693Z","dependency_job_id":null,"html_url":"https://github.com/EngineersBox/Rust-MQTT","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/EngineersBox/Rust-MQTT","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2FRust-MQTT","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2FRust-MQTT/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2FRust-MQTT/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2FRust-MQTT/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EngineersBox","download_url":"https://codeload.github.com/EngineersBox/Rust-MQTT/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EngineersBox%2FRust-MQTT/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32422580,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T06:29:02.080Z","status":"ssl_error","status_checked_at":"2026-04-29T06:29:00.631Z","response_time":110,"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":["analyser","mqtt","publish-subscribe","rust"],"created_at":"2025-01-27T22:08:26.159Z","updated_at":"2026-04-29T11:04:39.653Z","avatar_url":"https://github.com/EngineersBox.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rust-MQTT\nAn MQTT pub/sub with built in analyser\n\n## Installing Rust\n\nThis project is built with Rust, as such you will need the language installed. For UNIX based OS' this is\nstraightforward and can be down via the steps below. I would advise you look at the official documentation in order to\ninstall on your required system \u003chttps://www.rust-lang.org/tools/install\u003e\n\nFor UNIX you can do the following:\n\n```shell\ncurl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh\nrustup update\n```\n\nverify the installation was successful with\n\n```shell\nrustc --version\n```\n\nif the command was not found the the `PATH` variable was most likely not set and will need to be done manually by\nappending `~/.cargo/bin` to `PATH`\n\n## Run\n\nRunning the project is very simple via the cargo utility (this is part of the rust standard installation).\nIt is important to note that the **pubcontroller** should be started before the **analyser** as the subscriptions should\nbe established before the analyser tries to send. Since the first set of messages are QoS 0, these will not be queued\non the broker and as such won't be available to the subscriber past the arrival at the broker\n\n### Pubcontroller\n\nYou can run the **pubcontroller** with the following:\n\n```shell\ncargo run --bin pubcontroller\n```\n\n### Analyser\n\nYou can run the **analyser** with the following:\n\n```shell\ncargo run --bin analyser\n```\n\n## Configuration\n\nThere are default configurations for the **pubcontroller** and **analyser** in the `resource` directory. These config files\ndefine how the publisher, subscriber and MQTT client behave.\n\nThe two configuration files are as follows:\n* `resource/pubcontroller.properties`\n* `resource/analyser.properties`\n\nThe configuration properties avaiable are:\n* `broker`: Properties for the broker connection\n  * `host`: Hostname to connect to\n  * `port`: Port to connect to. MQTT defaults to `1883` for TCP and `8883` for WebSocket connections\n* `creds`: Credentials to connect to the broker,\n  * `username`: Username to connect with\n  * `password`: Password to connect with\n* `client`: Configurations for persistence and sessions\n  *`keep_alive`: How long persistent connections should last with inactivity\n  * `timeout`: Duration for terminating a connection with idle state\n  * `clean_session`: Whether to persist a previous cached session (ID, queued messages, etc)\n* `subscriber_connection`: Defines the topics and retry rates\n  * `id`: Client ID to register with the broker (unique)\n  * `topics`: Which topics to subscribe to\n  * `retries`: How many times to retry a reconnect to the broker\n  * `retry_duration`: How often to perform a reconnection in milliseconds\n* `publisher_connection`: Defines the topics and message quantity\n  * `id`: Client ID to register with the broker (unique)\n  * `topics`: Which topics to subscribe to\n  * `message_quantity`: Number of messages to send relative to time period","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineersbox%2Frust-mqtt","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fengineersbox%2Frust-mqtt","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fengineersbox%2Frust-mqtt/lists"}