Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hivemq/hivemq-hello-world-extension

HiveMQ extension for demonstrating the HiveMQ extension system
https://github.com/hivemq/hivemq-hello-world-extension

demonstration extension hello-world hivemq hivemq-extension mqtt

Last synced: about 2 hours ago
JSON representation

HiveMQ extension for demonstrating the HiveMQ extension system

Awesome Lists containing this project

README

        

:hivemq-link: https://www.hivemq.com
:hivemq-extension-docs: {hivemq-link}/docs/extensions/latest/
:hivemq-mqtt-toolbox: {hivemq-link}/mqtt-toolbox
:hivemq-support: {hivemq-link}/support/
:hivemq-testcontainer: https://github.com/hivemq/hivemq-testcontainer
:hivemq-mqtt-client: https://github.com/hivemq/hivemq-mqtt-client

= HiveMQ 4 Hello World Extension

image:https://img.shields.io/badge/Extension_Type-Demonstration-orange?style=for-the-badge[Extension Type]
image:https://img.shields.io/github/v/release/hivemq/hivemq-hello-world-extension?style=for-the-badge[GitHub release (latest by date),link=https://github.com/hivemq/hivemq-hello-world-extension/releases/latest]
image:https://img.shields.io/github/license/hivemq/hivemq-hello-world-extension?style=for-the-badge&color=brightgreen[GitHub,link=LICENSE]
image:https://img.shields.io/github/actions/workflow/status/hivemq/hivemq-hello-world-extension/check.yml?branch=master&style=for-the-badge[GitHub Workflow Status,link=https://github.com/hivemq/hivemq-hello-world-extension/actions/workflows/check.yml?query=branch%3Amaster]

== Purpose

This Hello World extension sets a ClientLifecycleEventListener which logs the MQTT Version and identifier of every connecting and disconnecting client and registers a PublishInboundInterceptor to modify the payload of every Publish with the topic 'hello/world' to 'Hello World!'.

We strongly recommend to read the {hivemq-extension-docs}[HiveMQ Extension Documentation] to grasp the core concepts of HiveMQ extension development.

== Installation

. Clone this repository into a Java 11 Gradle project.
. Execute the Gradle task `hivemqExtensionZip` to build the extension.
. Move the file: `build/hivemq-extension/hivemq-hello-world-extension-4.34.0.zip` to the directory: `HIVEMQ_HOME/extensions`
. Unzip the file.
. Start HiveMQ.

== First Steps

=== Manual Testing

Connect with an {hivemq-mqtt-toolbox}[MQTT client] of your choice.
You should see a log message with its identifier and MQTT version.

=== Automatic Testing

Execute the `HelloWorldInterceptorIT` for automatic testing of the extension.
It uses the {hivemq-testcontainer}[HiveMQ Testcontainer] to automatically package, deploy and run the extension inside a HiveMQ docker container.
The test creates a {hivemq-mqtt-client}[HiveMQ MQTT Client] to publish and receive a message with the topic 'hello/world'.
It checks whether the payload has been changed correctly to 'Hello World!'.

== Next Steps

Awesome, you got your first HiveMQ 4 extension working.

Now read the {hivemq-extension-docs}[HiveMQ Extension Documentation] to see what extensions can do.

== Need Help?

If you encounter any problems, we are happy to help.
The best place to get in contact is our {hivemq-support}[support^].

== Contributing

If you want to contribute to HiveMQ Hello World Extension, see the link:CONTRIBUTING.md[contribution guidelines].

== License

HiveMQ Hello World Extension is licensed under the `APACHE LICENSE, VERSION 2.0`.
A copy of the license can be found link:LICENSE[here].