Native Mode

The extension fully supports GraalVM/Mandrel native compilation — including TLS and mutual TLS, which are exercised in native mode by the project’s integration tests. There is nothing HiveMQ-specific to configure beyond the standard Quarkus native image guide.

Build a native executable

With a local GraalVM/Mandrel installation:

./mvnw package -Dnative

Or build inside a container (no local GraalVM required):

./mvnw package -Dnative -Dquarkus.native.container-build=true

Builder images

The project’s CI builds and tests native images with the following Quarkus builder images:

quay.io/quarkus/ubi9-quarkus-mandrel-builder-image:jdk-21
quay.io/quarkus/ubi9-quarkus-graalvmce-builder-image:jdk-21

To pin a specific builder image:

./mvnw package -Dnative \
    -Dquarkus.native.container-build=true \
    -Dquarkus.native.builder-image=quay.io/quarkus/ubi9-quarkus-mandrel-builder-image:jdk-21

TLS in native mode

TLS and mutual TLS work in native mode. Make sure the truststore/keystore files you reference in your ssl.truststore. / ssl.keystore. configuration are available to the native executable at runtime (for example, mounted next to the binary or bundled as resources). See Security & TLS for the configuration details.