{"id":18966346,"url":"https://github.com/hivemq/hivemq-google-cloud-pubsub-hello-world-customization","last_synced_at":"2025-04-19T14:14:32.874Z","repository":{"id":58855696,"uuid":"525363639","full_name":"hivemq/hivemq-google-cloud-pubsub-hello-world-customization","owner":"hivemq","description":"An example customization project for the HiveMQ Enterprise Extension for Google Cloud Pub/Sub using the HiveMQ Google Cloud Pub/Sub Extension Customization SDK.","archived":false,"fork":false,"pushed_at":"2025-03-27T18:26:31.000Z","size":259,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-27T19:28:33.645Z","etag":null,"topics":["customization","demonstration","google-cloud","google-cloud-pubsub","google-cloud-pubsub-extension","hello-world","hivemq","mqtt"],"latest_commit_sha":null,"homepage":"https://www.hivemq.com","language":"Java","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/hivemq.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2022-08-16T12:10:10.000Z","updated_at":"2025-03-27T18:18:55.000Z","dependencies_parsed_at":"2024-11-08T14:38:36.435Z","dependency_job_id":"c7f83bc9-5752-4cfc-8c34-fa379db0df11","html_url":"https://github.com/hivemq/hivemq-google-cloud-pubsub-hello-world-customization","commit_stats":null,"previous_names":[],"tags_count":35,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hivemq%2Fhivemq-google-cloud-pubsub-hello-world-customization","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hivemq%2Fhivemq-google-cloud-pubsub-hello-world-customization/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hivemq%2Fhivemq-google-cloud-pubsub-hello-world-customization/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hivemq%2Fhivemq-google-cloud-pubsub-hello-world-customization/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hivemq","download_url":"https://codeload.github.com/hivemq/hivemq-google-cloud-pubsub-hello-world-customization/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249213733,"owners_count":21231096,"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":["customization","demonstration","google-cloud","google-cloud-pubsub","google-cloud-pubsub-extension","hello-world","hivemq","mqtt"],"created_at":"2024-11-08T14:36:43.998Z","updated_at":"2025-04-16T07:33:05.267Z","avatar_url":"https://github.com/hivemq.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":":hivemq-link: https://www.hivemq.com\n:hivemq-google-cloud-pubsub-docs: {hivemq-link}/docs/google-cloud-pubsub/latest/enterprise-extension-for-google-cloud-pubsub/google-cloud-pubsub.html\n:hivemq-google-cloud-pubsub-customization-docs: {hivemq-link}/docs/google-cloud-pubsub/latest/enterprise-extension-for-google-cloud-pubsub/google-cloud-pubsub-customization.html\n:hivemq-blog-tools: {hivemq-link}/mqtt-toolbox/\n:hivemq-support: https://community.hivemq.com\n\n= HiveMQ Google Cloud Pub/Sub Extension Hello World Customization\n\nimage:https://img.shields.io/badge/Customization_Type-Demonstration-orange?style=for-the-badge[Extension Type]\nimage:https://img.shields.io/github/v/release/hivemq/hivemq-google-cloud-pubsub-hello-world-customization?style=for-the-badge[GitHub release (latest by date),link=https://github.com/hivemq/hivemq-google-cloud-pubsub-hello-world-customization/releases/latest]\nimage:https://img.shields.io/github/license/hivemq/hivemq-google-cloud-pubsub-hello-world-customization?style=for-the-badge\u0026color=brightgreen[GitHub,link=LICENSE]\n\n== Purpose\n\nThis Hello World customization uses two transformers.\n\n- One `mqtt-to-pubsub` transformer that forwards MQTT publish messages to Google Cloud Pub/Sub.\nThis transformer reads the Google Cloud Pub/Sub topic from the custom settings of the `config.xml` file and preserves the MQTT topic,\nretained flag, QoS level, and user properties as Pub/Sub message attributes.\n- One `pubsub-to-mqtt` transformer that forwards Pub/Sub messages to HiveMQ.\nThis transformer reads the QoS level from the custom settings of the `config.xml` file, uses the `mqtt/topic` as the MQTT topic, and preserves\nevery Pub/Sub attribute as MQTT user properties.\n\n== Installation\n\n. Clone this repository into a Java 11 Gradle project.\n. Run the `./gradlew jar` task from Gradle to build the customization.\n. Move the `build/libs/hivemq-google-cloud-pubsub-hello-world-customization-4.38.0.jar` file to the  `HIVEMQ_HOME/extensions/hivemq-google-cloud-pubsub-extension/customizations` directory.\n. Copy the `src/main/resources/google-cloud-pubsub-configuration.xml` file to the `HIVEMQ_HOME/extensions/hivemq-google-cloud-pubsub-extension` folder.\n. Adapt the configuration to your environment.\n    - Set the `\u003cgoogle-cloud-project-id\u003e` in the `\u003cpubsub-connection\u003e` tag to match your Google Cloud Pub/Sub project ID.\n    - Set the `\u003cfile-path\u003e` in the `\u003cservice-account\u003e` tag to the absolute or relative path of your `service-account-key.json` file.\n    - Set the `\u003cpubsub-subscription\u003e` name in the `\u003cpubsub-to-mqtt-transformer\u003e` tag to match the correct Google Cloud Pub/Sub subscription.\n    - Set the `\u003cvalue\u003e` of the destination `\u003ccustom-setting\u003e` in the `\u003cmqtt-to-pubsub-transformer\u003e` to the correct Google Cloud Pub/Sub topic.\n. Delete the `HIVEMQ_HOME/extensions/hivemq-google-cloud-pubsub-extension/DISABLED` file (if there is one).\n. Start HiveMQ.\n\n== First Steps\n\n=== Manually Test Your MQTT-to-Pub/Sub Mapping\n\n- Connect with an {hivemq-blog-tools}[MQTT client] of your choice.\n- Publish an MQTT message to the topic `topic/test`.\n- Monitor the topic you configured in your Google Cloud Pub/Sub project for a received message. (Hint: Pub/Sub topics must have subscriptions or a message retention duration set for messages to be stored)\n\n=== Manually Test Your Pub/Sub-to-MQTT Mapping\n\n- Connect with an {hivemq-blog-tools}[MQTT client] of your choice.\n- Subscribe to the topic `mqtt/topic`.\n- Publish a Pub/Sub message to the Pub/Sub topic.\n- Verify that you receive an MQTT message with your client.\n\n== Need Help?\n\nIf you encounter any problems, we are happy to help.\nThe best place to get in contact is our {hivemq-support}[community forum].\n\n== License\n\nHiveMQ Google Cloud Pub/Sub Extension Hello World Customization is licensed under the `APACHE LICENSE, VERSION 2.0`.\nA copy of the license can be found link:LICENSE[here].\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhivemq%2Fhivemq-google-cloud-pubsub-hello-world-customization","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhivemq%2Fhivemq-google-cloud-pubsub-hello-world-customization","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhivemq%2Fhivemq-google-cloud-pubsub-hello-world-customization/lists"}