diff --git a/_data/versioned/main/index/quarkus.yaml b/_data/versioned/main/index/quarkus.yaml index c34669758f..975c24eafd 100644 --- a/_data/versioned/main/index/quarkus.yaml +++ b/_data/versioned/main/index/quarkus.yaml @@ -1994,6 +1994,17 @@ types: - tooling type: guide url: /guides/quarkus-maven-plugin + - title: Quarkus Messaging Extensions + filename: messaging.adoc + summary: "Event-driven messaging systems have become the backbone of most modern applications, enabling the building of message-driven microservices or complex data streaming pipelines." + categories: messaging + topics: + - messaging + - reactive-messaging + extensions: + - io.quarkus:quarkus-messaging + type: guide + url: /guides/messaging - title: Quarkus Reactive Architecture filename: quarkus-reactive-architecture.adoc summary: Learn more about Quarkus reactive architecture. diff --git a/_data/versioned/main/index/relations.yaml b/_data/versioned/main/index/relations.yaml index defa8551b6..bda407d8cc 100644 --- a/_data/versioned/main/index/relations.yaml +++ b/_data/versioned/main/index/relations.yaml @@ -50,6 +50,10 @@ url: /guides/kafka-dev-ui type: guide matches: 1 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 1 - title: Quarkus Virtual Thread support with Reactive Messaging url: /guides/messaging-virtual-threads type: guide @@ -185,6 +189,10 @@ url: /guides/tests-with-coverage type: guide matches: 1 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 1 - title: Quarkus Virtual Thread support with Reactive Messaging url: /guides/messaging-virtual-threads type: guide @@ -280,6 +288,10 @@ url: /guides/kafka-dev-ui type: guide matches: 1 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 1 - title: Quarkus Virtual Thread support with Reactive Messaging url: /guides/messaging-virtual-threads type: guide @@ -457,6 +469,10 @@ url: /guides/tests-with-coverage type: guide matches: 1 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 1 - title: Reactive Messaging AMQP 1.0 Connector Reference Documentation url: /guides/amqp-reference type: reference @@ -7831,6 +7847,10 @@ url: /guides/kafka-dev-ui type: guide matches: 1 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 1 - title: Quarkus Virtual Thread support with Reactive Messaging url: /guides/messaging-virtual-threads type: guide @@ -7955,6 +7975,10 @@ url: /guides/kafka-dev-ui type: guide matches: 2 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 2 - title: Reactive Messaging RabbitMQ Connector Reference Documentation url: /guides/rabbitmq-reference type: reference @@ -8130,6 +8154,10 @@ url: /guides/tests-with-coverage type: guide matches: 1 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 1 - title: Reactive Messaging AMQP 1.0 Connector Reference Documentation url: /guides/amqp-reference type: reference @@ -8289,6 +8317,10 @@ url: /guides/dev-mode-differences type: guide matches: 1 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 1 - title: Reactive Messaging AMQP 1.0 Connector Reference Documentation url: /guides/amqp-reference type: reference @@ -8376,6 +8408,10 @@ url: /guides/kafka-dev-ui type: guide matches: 2 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 2 - title: Reactive Messaging RabbitMQ Connector Reference Documentation url: /guides/rabbitmq-reference type: reference @@ -8503,6 +8539,10 @@ url: /guides/rabbitmq type: guide matches: 1 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 1 - title: Reactive Messaging AMQP 1.0 Connector Reference Documentation url: /guides/amqp-reference type: reference @@ -8610,6 +8650,10 @@ url: /guides/rabbitmq type: guide matches: 1 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 1 - title: Reactive Messaging AMQP 1.0 Connector Reference Documentation url: /guides/amqp-reference type: reference @@ -8717,6 +8761,10 @@ url: /guides/rabbitmq type: guide matches: 1 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 1 - title: Reactive Messaging AMQP 1.0 Connector Reference Documentation url: /guides/amqp-reference type: reference @@ -9517,6 +9565,88 @@ url: /guides/podman type: guide matches: 1 +/guides/messaging: + sameTopics: + - title: Apache Kafka Reference Guide + url: /guides/kafka + type: guide + matches: 2 + - title: Apache Pulsar Reference Guide + url: /guides/pulsar + type: guide + matches: 2 + - title: Dev Services for Pulsar + url: /guides/pulsar-dev-services + type: guide + matches: 2 + - title: Dev Services for RabbitMQ + url: /guides/rabbitmq-dev-services + type: guide + matches: 2 + - title: Getting Started to Quarkus Messaging with Apache Kafka + url: /guides/kafka-getting-started + type: guide + matches: 2 + - title: Getting Started to Quarkus Messaging with Apache Pulsar + url: /guides/pulsar-getting-started + type: guide + matches: 2 + - title: Getting Started to Quarkus Messaging with RabbitMQ + url: /guides/rabbitmq + type: guide + matches: 2 + - title: Quarkus Virtual Thread support with Reactive Messaging + url: /guides/messaging-virtual-threads + type: guide + matches: 2 + - title: Reactive Messaging RabbitMQ Connector Reference Documentation + url: /guides/rabbitmq-reference + type: reference + matches: 2 + - title: Dev Services for AMQP + url: /guides/amqp-dev-services + type: guide + matches: 1 + - title: Dev Services for Apicurio Registry + url: /guides/apicurio-registry-dev-services + type: guide + matches: 1 + - title: Dev Services for Kafka + url: /guides/kafka-dev-services + type: guide + matches: 1 + - title: Getting Started to Quarkus Messaging with AMQP 1.0 + url: /guides/amqp + type: guide + matches: 1 + - title: Kafka Dev UI + url: /guides/kafka-dev-ui + type: guide + matches: 1 + - title: Reactive Messaging AMQP 1.0 Connector Reference Documentation + url: /guides/amqp-reference + type: reference + matches: 1 + - title: Using Apache Kafka Streams + url: /guides/kafka-streams + type: guide + matches: 1 + - title: Using Apache Kafka with Schema Registry and Avro + url: /guides/kafka-schema-registry-avro + type: guide + matches: 1 + - title: Using Apache Kafka with Schema Registry and JSON Schema + url: /guides/kafka-schema-registry-json-schema + type: guide + matches: 1 + - title: Using JMS + url: /guides/jms + type: guide + matches: 1 + - title: Using the event bus + url: /guides/reactive-event-bus + type: guide + matches: 1 /guides/messaging-virtual-threads: sameTopics: - title: Apache Kafka Reference Guide @@ -9559,6 +9689,10 @@ url: /guides/kafka-dev-ui type: guide matches: 2 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 2 - title: Reactive Messaging RabbitMQ Connector Reference Documentation url: /guides/rabbitmq-reference type: reference @@ -10436,6 +10570,10 @@ url: /guides/rabbitmq type: guide matches: 2 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 2 - title: Quarkus Virtual Thread support with Reactive Messaging url: /guides/messaging-virtual-threads type: guide @@ -10575,6 +10713,10 @@ url: /guides/kafka-dev-ui type: guide matches: 2 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 2 - title: Quarkus Virtual Thread support with Reactive Messaging url: /guides/messaging-virtual-threads type: guide @@ -10666,6 +10808,10 @@ url: /guides/rabbitmq type: guide matches: 2 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 2 - title: Quarkus Virtual Thread support with Reactive Messaging url: /guides/messaging-virtual-threads type: guide @@ -10919,6 +11065,10 @@ url: /guides/pulsar-getting-started type: guide matches: 2 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 2 - title: Quarkus Virtual Thread support with Reactive Messaging url: /guides/messaging-virtual-threads type: guide @@ -11054,6 +11204,10 @@ url: /guides/kafka-dev-ui type: guide matches: 2 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 2 - title: Quarkus Virtual Thread support with Reactive Messaging url: /guides/messaging-virtual-threads type: guide @@ -11197,6 +11351,10 @@ url: /guides/kafka-dev-ui type: guide matches: 2 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 2 - title: Quarkus Virtual Thread support with Reactive Messaging url: /guides/messaging-virtual-threads type: guide @@ -11312,6 +11470,10 @@ url: /guides/kafka-dev-ui type: guide matches: 1 + - title: Quarkus Messaging Extensions + url: /guides/messaging + type: guide + matches: 1 - title: Quarkus Virtual Thread support with Reactive Messaging url: /guides/messaging-virtual-threads type: guide diff --git a/_generated-doc/main/config/all-configuration-groups-generated-doc/io.quarkus.smallrye.reactivemessaging.runtime.HealthCenterFilterConfig.HealthCenterConfig b/_generated-doc/main/config/all-configuration-groups-generated-doc/io.quarkus.smallrye.reactivemessaging.runtime.HealthCenterFilterConfig.HealthCenterConfig new file mode 100644 index 0000000000..20cfdaae62 --- /dev/null +++ b/_generated-doc/main/config/all-configuration-groups-generated-doc/io.quarkus.smallrye.reactivemessaging.runtime.HealthCenterFilterConfig.HealthCenterConfig @@ -0,0 +1 @@ +[{"configDocKey":{"type":"boolean","key":".enabled","additionalKeys":[],"configDoc":"Whether all health check is enabled","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"enabled","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"","since":null,"environmentVariable":"_ENABLED","enum":false}},{"configDocKey":{"type":"boolean","key":".readiness.enabled","additionalKeys":[],"configDoc":"Whether the readiness health check is enabled.","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"readiness-enabled","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"","since":null,"environmentVariable":"_READINESS_ENABLED","enum":false}},{"configDocKey":{"type":"boolean","key":".liveness.enabled","additionalKeys":[],"configDoc":"Whether the liveness health check is enabled.","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"liveness-enabled","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"","since":null,"environmentVariable":"_LIVENESS_ENABLED","enum":false}},{"configDocKey":{"type":"boolean","key":".startup.enabled","additionalKeys":[],"configDoc":"Whether the startup health check is enabled.","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"startup-enabled","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"","since":null,"environmentVariable":"_STARTUP_ENABLED","enum":false}}] \ No newline at end of file diff --git a/_generated-doc/main/config/all-configuration-roots-generated-doc/io.quarkus.deployment.pkg.NativeConfig b/_generated-doc/main/config/all-configuration-roots-generated-doc/io.quarkus.deployment.pkg.NativeConfig index dd41a0aa0b..0baef2319c 100644 --- a/_generated-doc/main/config/all-configuration-roots-generated-doc/io.quarkus.deployment.pkg.NativeConfig +++ b/_generated-doc/main/config/all-configuration-roots-generated-doc/io.quarkus.deployment.pkg.NativeConfig @@ -1 +1 @@ -[{"configDocKey":{"type":"boolean","key":"quarkus.native.enabled","additionalKeys":[],"configDoc":"Set to enable native-image building using GraalVM.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"enabled","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLED","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.sources-only","additionalKeys":[],"configDoc":"Set to prevent the native-image process from actually building the native image.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"sources-only","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_SOURCES_ONLY","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.additional-build-args","additionalKeys":[],"configDoc":"Comma-separated, additional arguments to pass to the build process. If an argument includes the `,` symbol, it needs to be escaped, e.g. `++\\\\++,`","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"additional-build-args","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ADDITIONAL_BUILD_ARGS","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.enable-http-url-handler","additionalKeys":[],"configDoc":"If the HTTP url handler should be enabled, allowing you to do URL.openConnection() for HTTP URLs","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"enable-http-url-handler","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLE_HTTP_URL_HANDLER","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.enable-https-url-handler","additionalKeys":[],"configDoc":"If the HTTPS url handler should be enabled, allowing you to do URL.openConnection() for HTTPS URLs","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"enable-https-url-handler","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLE_HTTPS_URL_HANDLER","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.headless","additionalKeys":[],"configDoc":"The default value for java.awt.headless JVM option. Switching this option affects linking of awt libraries.","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"headless","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_HEADLESS","enum":false}},{"configDocKey":{"type":"java.lang.String","key":"quarkus.native.file-encoding","additionalKeys":[],"configDoc":"Defines the file encoding as in `-Dfile.encoding=...`. Native image runtime uses the host's (i.e. build time) value of `file.encoding` system property. We intentionally default this to UTF-8 to avoid platform specific defaults to be picked up which can then result in inconsistent behavior in the generated native executable.","withinAMap":false,"defaultValue":"UTF-8","javaDocSiteLink":"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html","docMapKey":"file-encoding","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_FILE_ENCODING","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.add-all-charsets","additionalKeys":[],"configDoc":"If all character sets should be added to the native image. This increases image size","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"add-all-charsets","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ADD_ALL_CHARSETS","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.graalvm-home","additionalKeys":[],"configDoc":"The location of the Graal distribution","withinAMap":false,"defaultValue":"${GRAALVM_HOME:}","javaDocSiteLink":"","docMapKey":"graalvm-home","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_GRAALVM_HOME","enum":false}},{"configDocKey":{"type":"java.io.File","key":"quarkus.native.java-home","additionalKeys":[],"configDoc":"The location of the JDK","withinAMap":false,"defaultValue":"${java.home}","javaDocSiteLink":"https://docs.oracle.com/javase/8/docs/api/java/io/File.html","docMapKey":"java-home","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_JAVA_HOME","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.native-image-xmx","additionalKeys":[],"configDoc":"The maximum Java heap to be used during the native image generation","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"native-image-xmx","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_NATIVE_IMAGE_XMX","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.debug-build-process","additionalKeys":[],"configDoc":"If the native image build should wait for a debugger to be attached before running. This is an advanced option and is generally only intended for those familiar with GraalVM internals","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"debug-build-process","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_DEBUG_BUILD_PROCESS","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.publish-debug-build-process-port","additionalKeys":[],"configDoc":"If the debug port should be published when building with docker and debug-build-process is true","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"publish-debug-build-process-port","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_PUBLISH_DEBUG_BUILD_PROCESS_PORT","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.enable-isolates","additionalKeys":[],"configDoc":"If isolates should be enabled","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"enable-isolates","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLE_ISOLATES","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.enable-fallback-images","additionalKeys":[],"configDoc":"If a JVM based 'fallback image' should be created if native image fails. This is not recommended, as this is functionally the same as just running the application in a JVM","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"enable-fallback-images","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLE_FALLBACK_IMAGES","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.auto-service-loader-registration","additionalKeys":[],"configDoc":"If all META-INF/services entries should be automatically registered","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"auto-service-loader-registration","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_AUTO_SERVICE_LOADER_REGISTRATION","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.dump-proxies","additionalKeys":[],"configDoc":"If the bytecode of all proxies should be dumped for inspection","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"dump-proxies","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_DUMP_PROXIES","enum":false}},{"configDocKey":{"type":"java.lang.Boolean","key":"quarkus.native.container-build","additionalKeys":[],"configDoc":"If this build should be done using a container runtime. Unless container-runtime is also set, docker will be used by default. If docker is not available or is an alias to podman, podman will be used instead as the default.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"container-build","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_CONTAINER_BUILD","enum":false}},{"configDocKey":{"type":"java.lang.Boolean","key":"quarkus.native.pie","additionalKeys":[],"configDoc":"Explicit configuration option to generate a native Position Independent Executable (PIE) for Linux. If the system supports PIE generation, the default behaviour is to disable it for link:https://www.redhat.com/en/blog/position-independent-executable-pie-performance[performance reasons]. However, some systems can only run position-independent executables, so this option enables the generation of such native executables.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"pie","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_PIE","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.remote-container-build","additionalKeys":[],"configDoc":"If this build is done using a remote docker daemon.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"remote-container-build","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_REMOTE_CONTAINER_BUILD","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.builder-image","additionalKeys":[],"configDoc":"The docker image to use to do the image build. It can be one of `graalvm`, `mandrel`, or the full image path, e.g. `quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-21`.","withinAMap":false,"defaultValue":"mandrel","javaDocSiteLink":"","docMapKey":"image","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_BUILDER_IMAGE","enum":false}},{"configDocKey":{"type":"io.quarkus.deployment.pkg.NativeConfig.ImagePullStrategy","key":"quarkus.native.builder-image.pull","additionalKeys":[],"configDoc":"The strategy for pulling the builder image during the build.\n\nDefaults to 'always', which will always pull the most up-to-date image; useful to keep up with fixes when a (floating) tag is updated.\n\nUse 'missing' to only pull if there is no image locally; useful on development environments where building with out-of-date images is acceptable and bandwidth may be limited.\n\nUse 'never' to fail the build if there is no image locally.","withinAMap":false,"defaultValue":"always","javaDocSiteLink":"","docMapKey":"pull","configPhase":"BUILD_TIME","acceptedValues":["`always`","`missing`","`never`"],"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_BUILDER_IMAGE_PULL","enum":true}},{"configDocKey":{"type":"io.quarkus.deployment.util.ContainerRuntimeUtil.ContainerRuntime","key":"quarkus.native.container-runtime","additionalKeys":[],"configDoc":"The container runtime (e.g. docker) that is used to do an image based build. If this is set then a container build is always done.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"container-runtime","configPhase":"BUILD_TIME","acceptedValues":["`docker`","`docker-rootless`","`wsl`","`wsl-rootless`","`podman`","`podman-rootless`","`unavailable`"],"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_CONTAINER_RUNTIME","enum":true}},{"configDocKey":{"type":"string","key":"quarkus.native.container-runtime-options","additionalKeys":[],"configDoc":"Options to pass to the container runtime","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"container-runtime-options","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_CONTAINER_RUNTIME_OPTIONS","enum":false}},{"configDocKey":{"type":"io.quarkus.deployment.pkg.NativeConfig.MonitoringOption","key":"quarkus.native.monitoring","additionalKeys":[],"configDoc":"Enable monitoring various monitoring options. The value should be comma separated.\n\n - `jfr` for JDK flight recorder support\n - `jvmstat` for JVMStat support\n - `heapdump` for heampdump support\n - `jmxclient` for JMX client support (experimental)\n - `jmxserver` for JMX server support (experimental)\n - `all` for all monitoring features","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"monitoring","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_MONITORING","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.enable-reports","additionalKeys":[],"configDoc":"If the reports on call paths and included packages/classes/methods should be generated","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"enable-reports","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLE_REPORTS","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.report-exception-stack-traces","additionalKeys":[],"configDoc":"If exceptions should be reported with a full stack trace","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"report-exception-stack-traces","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_REPORT_EXCEPTION_STACK_TRACES","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.report-errors-at-runtime","additionalKeys":[],"configDoc":"If errors should be reported at runtime. This is a more relaxed setting, however it is not recommended as it means your application may fail at runtime if an unsupported feature is used by accident.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"report-errors-at-runtime","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_REPORT_ERRORS_AT_RUNTIME","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.reuse-existing","additionalKeys":[],"configDoc":"Don't build a native image if it already exists. This is useful if you have already built an image and you want to use Quarkus to deploy it somewhere. Note that this is not able to detect if the existing image is outdated, if you have modified source or config and want a new image you must not use this flag.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"reuse-existing","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_REUSE_EXISTING","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.resources.includes","additionalKeys":[],"configDoc":"A comma separated list of globs to match resource paths that should be added to the native image.\n\nUse slash (`/`) as a path separator on all platforms. Globs must not start with slash.\n\nBy default, no resources are included.\n\nExample: Given that you have `src/main/resources/ignored.png` and `src/main/resources/foo/selected.png` in your source tree and one of your dependency JARs contains `bar/some.txt` file, with the following configuration\n\n```\nquarkus.native.resources.includes = foo/**,bar/**/*.txt\n```\n\nthe files `src/main/resources/foo/selected.png` and `bar/some.txt` will be included in the native image, while `src/main/resources/ignored.png` will not be included.\n\nSupported glob features Feature Description `++*++` Matches a (possibly empty) sequence of characters that does not contain slash (`/`) `++**++` Matches a (possibly empty) sequence of characters that may contain slash (`/`) `?` Matches one character, but not slash `++[++abc++]++` Matches one character given in the bracket, but not slash `++[++a-z++]++` Matches one character from the range given in the bracket, but not slash `++[++!abc++]++` Matches one character not named in the bracket; does not match slash `++[++a-z++]++` Matches one character outside the range given in the bracket; does not match slash `++{++one,two,three++}++` Matches any of the alternating tokens separated by comma; the tokens may contain wildcards, nested alternations and ranges `++\\++` The escape character\n\nNote that there are three levels of escaping when passing this option via `application.properties`:\n\n . `application.properties` parser\n - MicroProfile Config list converter that splits the comma separated list\n - Glob parser All three levels use backslash (`++\\++`) as the escaping character. So you need to use an appropriate number of backslashes depending on which level you want to escape.\n\nNote that Quarkus extensions typically include the resources they require by themselves. This option is useful in situations when the built-in functionality is not sufficient.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"includes","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_RESOURCES_INCLUDES","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.resources.excludes","additionalKeys":[],"configDoc":"A comma separated list of globs to match resource paths that should *not* be added to the native image.\n\nUse slash (`/`) as a path separator on all platforms. Globs must not start with slash.\n\nPlease refer to `includes` for details about the glob syntax.\n\nBy default, no resources are excluded.\n\nExample: Given that you have `src/main/resources/red.png` and `src/main/resources/foo/green.png` in your source tree and one of your dependency JARs contains `bar/blue.png` file, with the following configuration\n\n```\nquarkus.native.resources.includes = **/*.png\nquarkus.native.resources.excludes = foo/**,**/green.png\n```\n\nthe resource `red.png` will be available in the native image while the resources `foo/green.png` and `bar/blue.png` will not be available in the native image.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"excludes","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_RESOURCES_EXCLUDES","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.debug.enabled","additionalKeys":[],"configDoc":"If debug is enabled and debug symbols are generated. The symbols will be generated in a separate .debug file.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"enabled","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_DEBUG_ENABLED","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.enable-dashboard-dump","additionalKeys":[],"configDoc":"Generate the report files for GraalVM Dashboard.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"enable-dashboard-dump","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLE_DASHBOARD_DUMP","enum":false}},{"configDocKey":{"type":"java.lang.Integer","key":"quarkus.native.compression.level","additionalKeys":[],"configDoc":"The compression level in ++[++1, 10++]++. 10 means _best_.\n\nHigher compression level requires more time to compress the executable.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"level","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_COMPRESSION_LEVEL","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.compression.additional-args","additionalKeys":[],"configDoc":"Allows passing extra arguments to the UPX command line (like --brute). The arguments are comma-separated. The exhaustive list of parameters can be found in link:https://github.com/upx/upx/blob/devel/doc/upx.pod[https://github.com/upx/upx/blob/devel/doc/upx.pod].","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"additional-args","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_COMPRESSION_ADDITIONAL_ARGS","enum":false}}] \ No newline at end of file +[{"configDocKey":{"type":"boolean","key":"quarkus.native.enabled","additionalKeys":[],"configDoc":"Set to enable native-image building using GraalVM.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"enabled","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLED","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.sources-only","additionalKeys":[],"configDoc":"Set to prevent the native-image process from actually building the native image.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"sources-only","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_SOURCES_ONLY","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.additional-build-args","additionalKeys":[],"configDoc":"Comma-separated, additional arguments to pass to the build process. If an argument includes the `,` symbol, it needs to be escaped, e.g. `++\\\\++,`","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"additional-build-args","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ADDITIONAL_BUILD_ARGS","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.enable-http-url-handler","additionalKeys":[],"configDoc":"If the HTTP url handler should be enabled, allowing you to do URL.openConnection() for HTTP URLs","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"enable-http-url-handler","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLE_HTTP_URL_HANDLER","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.enable-https-url-handler","additionalKeys":[],"configDoc":"If the HTTPS url handler should be enabled, allowing you to do URL.openConnection() for HTTPS URLs","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"enable-https-url-handler","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLE_HTTPS_URL_HANDLER","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.headless","additionalKeys":[],"configDoc":"The default value for java.awt.headless JVM option. Switching this option affects linking of awt libraries.","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"headless","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_HEADLESS","enum":false}},{"configDocKey":{"type":"java.lang.String","key":"quarkus.native.file-encoding","additionalKeys":[],"configDoc":"Defines the file encoding as in `-Dfile.encoding=...`. Native image runtime uses the host's (i.e. build time) value of `file.encoding` system property. We intentionally default this to UTF-8 to avoid platform specific defaults to be picked up which can then result in inconsistent behavior in the generated native executable.","withinAMap":false,"defaultValue":"UTF-8","javaDocSiteLink":"https://docs.oracle.com/javase/8/docs/api/java/lang/String.html","docMapKey":"file-encoding","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_FILE_ENCODING","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.add-all-charsets","additionalKeys":[],"configDoc":"If all character sets should be added to the native image. This increases image size","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"add-all-charsets","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ADD_ALL_CHARSETS","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.graalvm-home","additionalKeys":[],"configDoc":"The location of the Graal distribution","withinAMap":false,"defaultValue":"${GRAALVM_HOME:}","javaDocSiteLink":"","docMapKey":"graalvm-home","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_GRAALVM_HOME","enum":false}},{"configDocKey":{"type":"java.io.File","key":"quarkus.native.java-home","additionalKeys":[],"configDoc":"The location of the JDK","withinAMap":false,"defaultValue":"${java.home}","javaDocSiteLink":"https://docs.oracle.com/javase/8/docs/api/java/io/File.html","docMapKey":"java-home","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_JAVA_HOME","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.native-image-xmx","additionalKeys":[],"configDoc":"The maximum Java heap to be used during the native image generation","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"native-image-xmx","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_NATIVE_IMAGE_XMX","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.debug-build-process","additionalKeys":[],"configDoc":"If the native image build should wait for a debugger to be attached before running. This is an advanced option and is generally only intended for those familiar with GraalVM internals","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"debug-build-process","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_DEBUG_BUILD_PROCESS","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.publish-debug-build-process-port","additionalKeys":[],"configDoc":"If the debug port should be published when building with docker and debug-build-process is true","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"publish-debug-build-process-port","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_PUBLISH_DEBUG_BUILD_PROCESS_PORT","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.enable-isolates","additionalKeys":[],"configDoc":"If isolates should be enabled","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"enable-isolates","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLE_ISOLATES","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.enable-fallback-images","additionalKeys":[],"configDoc":"If a JVM based 'fallback image' should be created if native image fails. This is not recommended, as this is functionally the same as just running the application in a JVM","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"enable-fallback-images","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLE_FALLBACK_IMAGES","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.auto-service-loader-registration","additionalKeys":[],"configDoc":"If all META-INF/services entries should be automatically registered","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"auto-service-loader-registration","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_AUTO_SERVICE_LOADER_REGISTRATION","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.dump-proxies","additionalKeys":[],"configDoc":"If the bytecode of all proxies should be dumped for inspection","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"dump-proxies","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_DUMP_PROXIES","enum":false}},{"configDocKey":{"type":"java.lang.Boolean","key":"quarkus.native.container-build","additionalKeys":[],"configDoc":"If this build should be done using a container runtime. Unless container-runtime is also set, docker will be used by default. If docker is not available or is an alias to podman, podman will be used instead as the default.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"container-build","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_CONTAINER_BUILD","enum":false}},{"configDocKey":{"type":"java.lang.Boolean","key":"quarkus.native.pie","additionalKeys":[],"configDoc":"Explicit configuration option to generate a native Position Independent Executable (PIE) for Linux. If the system supports PIE generation, the default behaviour is to disable it for link:https://www.redhat.com/en/blog/position-independent-executable-pie-performance[performance reasons]. However, some systems can only run position-independent executables, so this option enables the generation of such native executables.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"pie","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_PIE","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.march","additionalKeys":[],"configDoc":"Generate instructions for a specific machine type. Defaults to `x86-64-v3` on AMD64 and `armv8-a` on AArch64. Use `compatibility` for best compatibility, or `native` for best performance if a native executable is deployed on the same machine or on a machine with the same CPU features. A list of all available machine types is available by executing `native-image -march=list`","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"march","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_MARCH","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.remote-container-build","additionalKeys":[],"configDoc":"If this build is done using a remote docker daemon.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"remote-container-build","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_REMOTE_CONTAINER_BUILD","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.builder-image","additionalKeys":[],"configDoc":"The docker image to use to do the image build. It can be one of `graalvm`, `mandrel`, or the full image path, e.g. `quay.io/quarkus/ubi-quarkus-mandrel-builder-image:jdk-21`.","withinAMap":false,"defaultValue":"mandrel","javaDocSiteLink":"","docMapKey":"image","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_BUILDER_IMAGE","enum":false}},{"configDocKey":{"type":"io.quarkus.deployment.pkg.NativeConfig.ImagePullStrategy","key":"quarkus.native.builder-image.pull","additionalKeys":[],"configDoc":"The strategy for pulling the builder image during the build.\n\nDefaults to 'always', which will always pull the most up-to-date image; useful to keep up with fixes when a (floating) tag is updated.\n\nUse 'missing' to only pull if there is no image locally; useful on development environments where building with out-of-date images is acceptable and bandwidth may be limited.\n\nUse 'never' to fail the build if there is no image locally.","withinAMap":false,"defaultValue":"always","javaDocSiteLink":"","docMapKey":"pull","configPhase":"BUILD_TIME","acceptedValues":["`always`","`missing`","`never`"],"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_BUILDER_IMAGE_PULL","enum":true}},{"configDocKey":{"type":"io.quarkus.deployment.util.ContainerRuntimeUtil.ContainerRuntime","key":"quarkus.native.container-runtime","additionalKeys":[],"configDoc":"The container runtime (e.g. docker) that is used to do an image based build. If this is set then a container build is always done.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"container-runtime","configPhase":"BUILD_TIME","acceptedValues":["`docker`","`docker-rootless`","`wsl`","`wsl-rootless`","`podman`","`podman-rootless`","`unavailable`"],"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_CONTAINER_RUNTIME","enum":true}},{"configDocKey":{"type":"string","key":"quarkus.native.container-runtime-options","additionalKeys":[],"configDoc":"Options to pass to the container runtime","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"container-runtime-options","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_CONTAINER_RUNTIME_OPTIONS","enum":false}},{"configDocKey":{"type":"io.quarkus.deployment.pkg.NativeConfig.MonitoringOption","key":"quarkus.native.monitoring","additionalKeys":[],"configDoc":"Enable monitoring various monitoring options. The value should be comma separated.\n\n - `jfr` for JDK flight recorder support\n - `jvmstat` for JVMStat support\n - `heapdump` for heampdump support\n - `jmxclient` for JMX client support (experimental)\n - `jmxserver` for JMX server support (experimental)\n - `all` for all monitoring features","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"monitoring","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_MONITORING","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.enable-reports","additionalKeys":[],"configDoc":"If the reports on call paths and included packages/classes/methods should be generated","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"enable-reports","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLE_REPORTS","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.report-exception-stack-traces","additionalKeys":[],"configDoc":"If exceptions should be reported with a full stack trace","withinAMap":false,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"report-exception-stack-traces","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_REPORT_EXCEPTION_STACK_TRACES","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.report-errors-at-runtime","additionalKeys":[],"configDoc":"If errors should be reported at runtime. This is a more relaxed setting, however it is not recommended as it means your application may fail at runtime if an unsupported feature is used by accident.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"report-errors-at-runtime","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_REPORT_ERRORS_AT_RUNTIME","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.reuse-existing","additionalKeys":[],"configDoc":"Don't build a native image if it already exists. This is useful if you have already built an image and you want to use Quarkus to deploy it somewhere. Note that this is not able to detect if the existing image is outdated, if you have modified source or config and want a new image you must not use this flag.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"reuse-existing","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_REUSE_EXISTING","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.resources.includes","additionalKeys":[],"configDoc":"A comma separated list of globs to match resource paths that should be added to the native image.\n\nUse slash (`/`) as a path separator on all platforms. Globs must not start with slash.\n\nBy default, no resources are included.\n\nExample: Given that you have `src/main/resources/ignored.png` and `src/main/resources/foo/selected.png` in your source tree and one of your dependency JARs contains `bar/some.txt` file, with the following configuration\n\n```\nquarkus.native.resources.includes = foo/**,bar/**/*.txt\n```\n\nthe files `src/main/resources/foo/selected.png` and `bar/some.txt` will be included in the native image, while `src/main/resources/ignored.png` will not be included.\n\nSupported glob features Feature Description `++*++` Matches a (possibly empty) sequence of characters that does not contain slash (`/`) `++**++` Matches a (possibly empty) sequence of characters that may contain slash (`/`) `?` Matches one character, but not slash `++[++abc++]++` Matches one character given in the bracket, but not slash `++[++a-z++]++` Matches one character from the range given in the bracket, but not slash `++[++!abc++]++` Matches one character not named in the bracket; does not match slash `++[++a-z++]++` Matches one character outside the range given in the bracket; does not match slash `++{++one,two,three++}++` Matches any of the alternating tokens separated by comma; the tokens may contain wildcards, nested alternations and ranges `++\\++` The escape character\n\nNote that there are three levels of escaping when passing this option via `application.properties`:\n\n . `application.properties` parser\n - MicroProfile Config list converter that splits the comma separated list\n - Glob parser All three levels use backslash (`++\\++`) as the escaping character. So you need to use an appropriate number of backslashes depending on which level you want to escape.\n\nNote that Quarkus extensions typically include the resources they require by themselves. This option is useful in situations when the built-in functionality is not sufficient.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"includes","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_RESOURCES_INCLUDES","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.resources.excludes","additionalKeys":[],"configDoc":"A comma separated list of globs to match resource paths that should *not* be added to the native image.\n\nUse slash (`/`) as a path separator on all platforms. Globs must not start with slash.\n\nPlease refer to `includes` for details about the glob syntax.\n\nBy default, no resources are excluded.\n\nExample: Given that you have `src/main/resources/red.png` and `src/main/resources/foo/green.png` in your source tree and one of your dependency JARs contains `bar/blue.png` file, with the following configuration\n\n```\nquarkus.native.resources.includes = **/*.png\nquarkus.native.resources.excludes = foo/**,**/green.png\n```\n\nthe resource `red.png` will be available in the native image while the resources `foo/green.png` and `bar/blue.png` will not be available in the native image.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"excludes","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_RESOURCES_EXCLUDES","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.debug.enabled","additionalKeys":[],"configDoc":"If debug is enabled and debug symbols are generated. The symbols will be generated in a separate .debug file.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"enabled","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_DEBUG_ENABLED","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.native.enable-dashboard-dump","additionalKeys":[],"configDoc":"Generate the report files for GraalVM Dashboard.","withinAMap":false,"defaultValue":"false","javaDocSiteLink":"","docMapKey":"enable-dashboard-dump","configPhase":"BUILD_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":false,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_ENABLE_DASHBOARD_DUMP","enum":false}},{"configDocKey":{"type":"java.lang.Integer","key":"quarkus.native.compression.level","additionalKeys":[],"configDoc":"The compression level in ++[++1, 10++]++. 10 means _best_.\n\nHigher compression level requires more time to compress the executable.","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"level","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_COMPRESSION_LEVEL","enum":false}},{"configDocKey":{"type":"string","key":"quarkus.native.compression.additional-args","additionalKeys":[],"configDoc":"Allows passing extra arguments to the UPX command line (like --brute). The arguments are comma-separated. The exhaustive list of parameters can be found in link:https://github.com/upx/upx/blob/devel/doc/upx.pod[https://github.com/upx/upx/blob/devel/doc/upx.pod].","withinAMap":false,"defaultValue":"","javaDocSiteLink":"","docMapKey":"additional-args","configPhase":"BUILD_TIME","acceptedValues":null,"optional":true,"list":true,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.native","since":null,"environmentVariable":"QUARKUS_NATIVE_COMPRESSION_ADDITIONAL_ARGS","enum":false}}] \ No newline at end of file diff --git a/_generated-doc/main/config/all-configuration-roots-generated-doc/io.quarkus.smallrye.reactivemessaging.runtime.HealthCenterFilterConfig b/_generated-doc/main/config/all-configuration-roots-generated-doc/io.quarkus.smallrye.reactivemessaging.runtime.HealthCenterFilterConfig new file mode 100644 index 0000000000..bd8b9ff164 --- /dev/null +++ b/_generated-doc/main/config/all-configuration-roots-generated-doc/io.quarkus.smallrye.reactivemessaging.runtime.HealthCenterFilterConfig @@ -0,0 +1 @@ +[{"configDocSection":{"name":"quarkus.messaging.health","optional":false,"withinAMap":false,"sectionDetails":"= Configuration for the health center filter","sectionDetailsTitle":"Configuration for the health center filter","configPhase":"RUN_TIME","topLevelGrouping":"quarkus.messaging","configGroupType":"io.quarkus.smallrye.reactivemessaging.runtime.HealthCenterFilterConfig.HealthCenterConfig","showSection":true,"configDocItems":[{"configDocKey":{"type":"boolean","key":"quarkus.messaging.health.\"channel\".enabled","additionalKeys":[],"configDoc":"Whether all health check is enabled","withinAMap":true,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"enabled","configPhase":"RUN_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.messaging","since":null,"environmentVariable":"QUARKUS_MESSAGING_HEALTH__CHANNEL__ENABLED","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.messaging.health.\"channel\".readiness.enabled","additionalKeys":[],"configDoc":"Whether the readiness health check is enabled.","withinAMap":true,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"readiness-enabled","configPhase":"RUN_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.messaging","since":null,"environmentVariable":"QUARKUS_MESSAGING_HEALTH__CHANNEL__READINESS_ENABLED","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.messaging.health.\"channel\".liveness.enabled","additionalKeys":[],"configDoc":"Whether the liveness health check is enabled.","withinAMap":true,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"liveness-enabled","configPhase":"RUN_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.messaging","since":null,"environmentVariable":"QUARKUS_MESSAGING_HEALTH__CHANNEL__LIVENESS_ENABLED","enum":false}},{"configDocKey":{"type":"boolean","key":"quarkus.messaging.health.\"channel\".startup.enabled","additionalKeys":[],"configDoc":"Whether the startup health check is enabled.","withinAMap":true,"defaultValue":"true","javaDocSiteLink":"","docMapKey":"startup-enabled","configPhase":"RUN_TIME","acceptedValues":null,"optional":false,"list":false,"passThroughMap":false,"withinAConfigGroup":true,"topLevelGrouping":"quarkus.messaging","since":null,"environmentVariable":"QUARKUS_MESSAGING_HEALTH__CHANNEL__STARTUP_ENABLED","enum":false}}],"anchorPrefix":null}}] \ No newline at end of file diff --git a/_generated-doc/main/config/extensions-configuration-roots-list/quarkus-smallrye-reactivemessaging.adoc/io.quarkus.smallrye.reactivemessaging.runtime.HealthCenterFilterConfig b/_generated-doc/main/config/extensions-configuration-roots-list/quarkus-smallrye-reactivemessaging.adoc/io.quarkus.smallrye.reactivemessaging.runtime.HealthCenterFilterConfig new file mode 100644 index 0000000000..d549a87302 --- /dev/null +++ b/_generated-doc/main/config/extensions-configuration-roots-list/quarkus-smallrye-reactivemessaging.adoc/io.quarkus.smallrye.reactivemessaging.runtime.HealthCenterFilterConfig @@ -0,0 +1 @@ +io.quarkus.smallrye.reactivemessaging.runtime.HealthCenterFilterConfig \ No newline at end of file diff --git a/_generated-doc/main/config/quarkus-all-config.adoc b/_generated-doc/main/config/quarkus-all-config.adoc index a3cbabb48a..64ed9725c0 100644 --- a/_generated-doc/main/config/quarkus-all-config.adoc +++ b/_generated-doc/main/config/quarkus-all-config.adoc @@ -41665,6 +41665,79 @@ endif::add-copy-button-to-env-var[] |`worker` +h|[[quarkus-messaging_quarkus-messaging-health-configuration-for-the-health-center-filter]]link:#quarkus-messaging_quarkus-messaging-health-configuration-for-the-health-center-filter[Configuration for the health center filter] + +h|Type +h|Default + +a| [[quarkus-messaging_quarkus-messaging-health-channel-enabled]]`link:#quarkus-messaging_quarkus-messaging-health-channel-enabled[quarkus.messaging.health."channel".enabled]` + + +[.description] +-- +Whether all health check is enabled + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-messaging_quarkus-messaging-health-channel-readiness-enabled]]`link:#quarkus-messaging_quarkus-messaging-health-channel-readiness-enabled[quarkus.messaging.health."channel".readiness.enabled]` + + +[.description] +-- +Whether the readiness health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__READINESS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__READINESS_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-messaging_quarkus-messaging-health-channel-liveness-enabled]]`link:#quarkus-messaging_quarkus-messaging-health-channel-liveness-enabled[quarkus.messaging.health."channel".liveness.enabled]` + + +[.description] +-- +Whether the liveness health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__LIVENESS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__LIVENESS_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-messaging_quarkus-messaging-health-channel-startup-enabled]]`link:#quarkus-messaging_quarkus-messaging-health-channel-startup-enabled[quarkus.messaging.health."channel".startup.enabled]` + + +[.description] +-- +Whether the startup health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__STARTUP_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__STARTUP_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + h|[[quarkus-messaging-amqp_quarkus-messaging-amqp-messaging-amqp-connector]]link:#quarkus-messaging-amqp_quarkus-messaging-amqp-messaging-amqp-connector[Messaging - AMQP Connector] h|Type @@ -55152,6 +55225,23 @@ endif::add-copy-button-to-env-var[] | +a|icon:lock[title=Fixed at build time] [[quarkus-core_quarkus-native-march]]`link:#quarkus-core_quarkus-native-march[quarkus.native.march]` + + +[.description] +-- +Generate instructions for a specific machine type. Defaults to `x86-64-v3` on AMD64 and `armv8-a` on AArch64. Use `compatibility` for best compatibility, or `native` for best performance if a native executable is deployed on the same machine or on a machine with the same CPU features. A list of all available machine types is available by executing `native-image -march=list` + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_NATIVE_MARCH+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_NATIVE_MARCH+++` +endif::add-copy-button-to-env-var[] +--|string +| + + a|icon:lock[title=Fixed at build time] [[quarkus-core_quarkus-native-remote-container-build]]`link:#quarkus-core_quarkus-native-remote-container-build[quarkus.native.remote-container-build]` diff --git a/_generated-doc/main/config/quarkus-core.adoc b/_generated-doc/main/config/quarkus-core.adoc index 2927de1828..3ca762a572 100644 --- a/_generated-doc/main/config/quarkus-core.adoc +++ b/_generated-doc/main/config/quarkus-core.adoc @@ -1583,6 +1583,23 @@ endif::add-copy-button-to-env-var[] | +a|icon:lock[title=Fixed at build time] [[quarkus-core_quarkus-native-march]]`link:#quarkus-core_quarkus-native-march[quarkus.native.march]` + + +[.description] +-- +Generate instructions for a specific machine type. Defaults to `x86-64-v3` on AMD64 and `armv8-a` on AArch64. Use `compatibility` for best compatibility, or `native` for best performance if a native executable is deployed on the same machine or on a machine with the same CPU features. A list of all available machine types is available by executing `native-image -march=list` + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_NATIVE_MARCH+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_NATIVE_MARCH+++` +endif::add-copy-button-to-env-var[] +--|string +| + + a|icon:lock[title=Fixed at build time] [[quarkus-core_quarkus-native-remote-container-build]]`link:#quarkus-core_quarkus-native-remote-container-build[quarkus.native.remote-container-build]` diff --git a/_generated-doc/main/config/quarkus-messaging-health-center-filter-config.adoc b/_generated-doc/main/config/quarkus-messaging-health-center-filter-config.adoc new file mode 100644 index 0000000000..ac12af391d --- /dev/null +++ b/_generated-doc/main/config/quarkus-messaging-health-center-filter-config.adoc @@ -0,0 +1,80 @@ + +:summaryTableId: quarkus-messaging-health-center-filter-config +[.configuration-legend] +icon:lock[title=Fixed at build time] Configuration property fixed at build time - All other configuration properties are overridable at runtime +[.configuration-reference, cols="80,.^10,.^10"] +|=== + +h|[[quarkus-messaging-health-center-filter-config_quarkus-messaging-health-configuration-for-the-health-center-filter]]link:#quarkus-messaging-health-center-filter-config_quarkus-messaging-health-configuration-for-the-health-center-filter[Configuration for the health center filter] + +h|Type +h|Default + +a| [[quarkus-messaging-health-center-filter-config_quarkus-messaging-health-channel-enabled]]`link:#quarkus-messaging-health-center-filter-config_quarkus-messaging-health-channel-enabled[quarkus.messaging.health."channel".enabled]` + + +[.description] +-- +Whether all health check is enabled + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-messaging-health-center-filter-config_quarkus-messaging-health-channel-readiness-enabled]]`link:#quarkus-messaging-health-center-filter-config_quarkus-messaging-health-channel-readiness-enabled[quarkus.messaging.health."channel".readiness.enabled]` + + +[.description] +-- +Whether the readiness health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__READINESS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__READINESS_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-messaging-health-center-filter-config_quarkus-messaging-health-channel-liveness-enabled]]`link:#quarkus-messaging-health-center-filter-config_quarkus-messaging-health-channel-liveness-enabled[quarkus.messaging.health."channel".liveness.enabled]` + + +[.description] +-- +Whether the liveness health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__LIVENESS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__LIVENESS_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-messaging-health-center-filter-config_quarkus-messaging-health-channel-startup-enabled]]`link:#quarkus-messaging-health-center-filter-config_quarkus-messaging-health-channel-startup-enabled[quarkus.messaging.health."channel".startup.enabled]` + + +[.description] +-- +Whether the startup health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__STARTUP_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__STARTUP_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + +|=== \ No newline at end of file diff --git a/_generated-doc/main/config/quarkus-native-pkg-native-config.adoc b/_generated-doc/main/config/quarkus-native-pkg-native-config.adoc index cb3e391935..4e6fda5396 100644 --- a/_generated-doc/main/config/quarkus-native-pkg-native-config.adoc +++ b/_generated-doc/main/config/quarkus-native-pkg-native-config.adoc @@ -335,6 +335,23 @@ endif::add-copy-button-to-env-var[] | +a|icon:lock[title=Fixed at build time] [[quarkus-native-pkg-native-config_quarkus-native-march]]`link:#quarkus-native-pkg-native-config_quarkus-native-march[quarkus.native.march]` + + +[.description] +-- +Generate instructions for a specific machine type. Defaults to `x86-64-v3` on AMD64 and `armv8-a` on AArch64. Use `compatibility` for best compatibility, or `native` for best performance if a native executable is deployed on the same machine or on a machine with the same CPU features. A list of all available machine types is available by executing `native-image -march=list` + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_NATIVE_MARCH+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_NATIVE_MARCH+++` +endif::add-copy-button-to-env-var[] +--|string +| + + a|icon:lock[title=Fixed at build time] [[quarkus-native-pkg-native-config_quarkus-native-remote-container-build]]`link:#quarkus-native-pkg-native-config_quarkus-native-remote-container-build[quarkus.native.remote-container-build]` diff --git a/_generated-doc/main/config/quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config.adoc b/_generated-doc/main/config/quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config.adoc new file mode 100644 index 0000000000..f7b97bacd5 --- /dev/null +++ b/_generated-doc/main/config/quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config.adoc @@ -0,0 +1,80 @@ + +:summaryTableId: quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config +[.configuration-legend] +icon:lock[title=Fixed at build time] Configuration property fixed at build time - All other configuration properties are overridable at runtime +[.configuration-reference, cols="80,.^10,.^10"] +|=== + +h|[[quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config_quarkus-messaging-health-configuration-for-the-health-center-filter]]link:#quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config_quarkus-messaging-health-configuration-for-the-health-center-filter[Configuration for the health center filter] + +h|Type +h|Default + +a| [[quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config_quarkus-messaging-health-channel-enabled]]`link:#quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config_quarkus-messaging-health-channel-enabled[quarkus.messaging.health."channel".enabled]` + + +[.description] +-- +Whether all health check is enabled + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config_quarkus-messaging-health-channel-readiness-enabled]]`link:#quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config_quarkus-messaging-health-channel-readiness-enabled[quarkus.messaging.health."channel".readiness.enabled]` + + +[.description] +-- +Whether the readiness health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__READINESS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__READINESS_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config_quarkus-messaging-health-channel-liveness-enabled]]`link:#quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config_quarkus-messaging-health-channel-liveness-enabled[quarkus.messaging.health."channel".liveness.enabled]` + + +[.description] +-- +Whether the liveness health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__LIVENESS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__LIVENESS_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config_quarkus-messaging-health-channel-startup-enabled]]`link:#quarkus-smallrye-reactivemessaging-config-group-health-center-filter-config-health-center-config_quarkus-messaging-health-channel-startup-enabled[quarkus.messaging.health."channel".startup.enabled]` + + +[.description] +-- +Whether the startup health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__STARTUP_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__STARTUP_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + +|=== \ No newline at end of file diff --git a/_generated-doc/main/config/quarkus-smallrye-reactivemessaging-general-config-items.adoc b/_generated-doc/main/config/quarkus-smallrye-reactivemessaging-general-config-items.adoc new file mode 100644 index 0000000000..f32e9f05c7 --- /dev/null +++ b/_generated-doc/main/config/quarkus-smallrye-reactivemessaging-general-config-items.adoc @@ -0,0 +1,80 @@ + +:summaryTableId: quarkus-smallrye-reactivemessaging-general-config-items +[.configuration-legend] +icon:lock[title=Fixed at build time] Configuration property fixed at build time - All other configuration properties are overridable at runtime +[.configuration-reference, cols="80,.^10,.^10"] +|=== + +h|[[quarkus-smallrye-reactivemessaging-general-config-items_quarkus-messaging-health-configuration-for-the-health-center-filter]]link:#quarkus-smallrye-reactivemessaging-general-config-items_quarkus-messaging-health-configuration-for-the-health-center-filter[Configuration for the health center filter] + +h|Type +h|Default + +a| [[quarkus-smallrye-reactivemessaging-general-config-items_quarkus-messaging-health-channel-enabled]]`link:#quarkus-smallrye-reactivemessaging-general-config-items_quarkus-messaging-health-channel-enabled[quarkus.messaging.health."channel".enabled]` + + +[.description] +-- +Whether all health check is enabled + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-smallrye-reactivemessaging-general-config-items_quarkus-messaging-health-channel-readiness-enabled]]`link:#quarkus-smallrye-reactivemessaging-general-config-items_quarkus-messaging-health-channel-readiness-enabled[quarkus.messaging.health."channel".readiness.enabled]` + + +[.description] +-- +Whether the readiness health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__READINESS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__READINESS_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-smallrye-reactivemessaging-general-config-items_quarkus-messaging-health-channel-liveness-enabled]]`link:#quarkus-smallrye-reactivemessaging-general-config-items_quarkus-messaging-health-channel-liveness-enabled[quarkus.messaging.health."channel".liveness.enabled]` + + +[.description] +-- +Whether the liveness health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__LIVENESS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__LIVENESS_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-smallrye-reactivemessaging-general-config-items_quarkus-messaging-health-channel-startup-enabled]]`link:#quarkus-smallrye-reactivemessaging-general-config-items_quarkus-messaging-health-channel-startup-enabled[quarkus.messaging.health."channel".startup.enabled]` + + +[.description] +-- +Whether the startup health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__STARTUP_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__STARTUP_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + +|=== \ No newline at end of file diff --git a/_generated-doc/main/config/quarkus-smallrye-reactivemessaging.adoc b/_generated-doc/main/config/quarkus-smallrye-reactivemessaging.adoc index d45aa74445..ac442a1c4b 100644 --- a/_generated-doc/main/config/quarkus-smallrye-reactivemessaging.adoc +++ b/_generated-doc/main/config/quarkus-smallrye-reactivemessaging.adoc @@ -95,4 +95,77 @@ endif::add-copy-button-to-env-var[] `event-loop`, `worker`, `virtual-thread` |`worker` + +h|[[quarkus-smallrye-reactivemessaging_quarkus-messaging-health-configuration-for-the-health-center-filter]]link:#quarkus-smallrye-reactivemessaging_quarkus-messaging-health-configuration-for-the-health-center-filter[Configuration for the health center filter] + +h|Type +h|Default + +a| [[quarkus-smallrye-reactivemessaging_quarkus-messaging-health-channel-enabled]]`link:#quarkus-smallrye-reactivemessaging_quarkus-messaging-health-channel-enabled[quarkus.messaging.health."channel".enabled]` + + +[.description] +-- +Whether all health check is enabled + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-smallrye-reactivemessaging_quarkus-messaging-health-channel-readiness-enabled]]`link:#quarkus-smallrye-reactivemessaging_quarkus-messaging-health-channel-readiness-enabled[quarkus.messaging.health."channel".readiness.enabled]` + + +[.description] +-- +Whether the readiness health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__READINESS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__READINESS_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-smallrye-reactivemessaging_quarkus-messaging-health-channel-liveness-enabled]]`link:#quarkus-smallrye-reactivemessaging_quarkus-messaging-health-channel-liveness-enabled[quarkus.messaging.health."channel".liveness.enabled]` + + +[.description] +-- +Whether the liveness health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__LIVENESS_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__LIVENESS_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + + +a| [[quarkus-smallrye-reactivemessaging_quarkus-messaging-health-channel-startup-enabled]]`link:#quarkus-smallrye-reactivemessaging_quarkus-messaging-health-channel-startup-enabled[quarkus.messaging.health."channel".startup.enabled]` + + +[.description] +-- +Whether the startup health check is enabled. + +ifdef::add-copy-button-to-env-var[] +Environment variable: env_var_with_copy_button:+++QUARKUS_MESSAGING_HEALTH__CHANNEL__STARTUP_ENABLED+++[] +endif::add-copy-button-to-env-var[] +ifndef::add-copy-button-to-env-var[] +Environment variable: `+++QUARKUS_MESSAGING_HEALTH__CHANNEL__STARTUP_ENABLED+++` +endif::add-copy-button-to-env-var[] +--|boolean +|`true` + |=== \ No newline at end of file diff --git a/_versions/main/guides/images/messaging-quarkus.png b/_versions/main/guides/images/messaging-quarkus.png new file mode 100644 index 0000000000..bd4f6cbe90 Binary files /dev/null and b/_versions/main/guides/images/messaging-quarkus.png differ diff --git a/_versions/main/guides/infinispan-client-reference.adoc b/_versions/main/guides/infinispan-client-reference.adoc index ec935c2991..7084c2e4ae 100644 --- a/_versions/main/guides/infinispan-client-reference.adoc +++ b/_versions/main/guides/infinispan-client-reference.adoc @@ -739,8 +739,8 @@ When a method annotated with `@CacheInvalidateAll` is invoked, Infinispan will r == Querying The Infinispan client supports both indexed and non-indexed search as long as the -`ProtoStreamMarshaller` is configured above. This allows the user to query based on the -properties of the proto schema. *Indexed queries are preferred for performance reasons*. +`ProtoStreamMarshaller` is configured above. This allows the user to query on *keys* or +*values* based on the properties of the proto schema. *Indexed queries are preferred for performance reasons*. .XML [source,xml,options="nowrap",subs=attributes+,role="primary"] diff --git a/_versions/main/guides/messaging.adoc b/_versions/main/guides/messaging.adoc new file mode 100644 index 0000000000..2361154650 --- /dev/null +++ b/_versions/main/guides/messaging.adoc @@ -0,0 +1,778 @@ +//// +This guide is maintained in the main Quarkus repository +and pull requests should be submitted there: +https://github.com/quarkusio/quarkus/tree/main/docs/src/main/asciidoc +//// += Quarkus Messaging Extensions +include::_attributes.adoc[] +:categories: messaging +:topics: messaging,reactive-messaging +:extensions: io.quarkus:quarkus-messaging +:rm_blocking_annotation: https://javadoc.io/doc/io.smallrye.reactive/smallrye-reactive-messaging-api/latest/io/smallrye/reactive/messaging/annotations/Blocking.html +:rm_blocking_docs: http://smallrye.io/smallrye-reactive-messaging/4.8.0/concepts/blocking/ +:rm_doc: http://smallrye.io/smallrye-reactive-messaging/ +:rm_doc_method_signatures: https://smallrye.io/smallrye-reactive-messaging/latest/concepts/signatures/ +:rm_doc_emitter: https://smallrye.io/smallrye-reactive-messaging/latest/concepts/emitter/ +:mutiny: https://smallrye.io/smallrye-mutiny/latest/ +:eclipse-vertx: https://vertx.io/ +:camel-smallrye-reactive-messaging: https://camel.apache.org/camel-quarkus/3.8.x/reference/extensions/smallrye-reactive-messaging.html +:nats-jetstream: https://docs.quarkiverse.io/quarkus-reactive-messsaging-nats-jetstream/dev/index.html +:solace-quarkus: https://solacelabs.github.io/solace-quarkus/ +:http-websocket-connector: https://quarkus.io/extensions/io.quarkiverse.reactivemessaging.http/quarkus-reactive-messaging-http/ + +Event-driven messaging systems have become the backbone of most modern applications, +enabling the building of message-driven microservices or complex data streaming pipelines. + +Quarkus offers a comprehensive suite of messaging extensions designed to synchronize with leading messaging technologies effortlessly. +This empowers developers to concentrate on crafting the core application logic, liberating them from the necessity to delve into the complexities of individual APIs and messaging infrastructures. + +image::messaging-quarkus.png[Quarkus Messaging] + +This page focuses on common features and the development model for all messaging extensions. + +Some of these extensions are maintained in the core Quarkus repository: + +* *Messaging*: The core extension defines the basic concepts and APIs to develop messaging applications +* xref:kafka.adoc[*Messaging - Kafka Connector*] +* xref:pulsar.adoc[*Messaging - Pulsar Connector*] +* xref:rabbitmq-reference.adoc[*Messaging - RabbitMQ Connector*] +* xref:amqp-reference.adoc[*Messaging - AMQP 1.0 Connector*] +* *Messaging - MQTT Connector* + +Some extensions are contributed and maintained by the community: + +* link:{camel-smallrye-reactive-messaging}[Camel Smallrye Reactive Messaging] +* link:{nats-jetstream}[Nats Jetstream Connector] +* link:{solace-quarkus}[Solace Messaging Connector] +* link:{http-websocket-connector}[Reactive HTTP and WebSocket Connector] +* AWS SQS Connector + +Other connectors, such as the *JMS Connector* or the *Google PubSub Connector*, do not benefit from the same level of integration and require more manual configuration to set up. + +On the other hand, some messaging-related extensions propose low-level provider-specific integrations. +The level of support covered on this page DOES NOT involve these low-level extensions. +A non-exhaustive list of this kind of extension are the following: + +* link:https://quarkus.io/guides/kafka-streams[Kafka Streams Extension] +* link:https://docs.quarkiverse.io/quarkus-rabbitmq-client/dev/index.html[RabbitMQ Client] +* link:https://docs.quarkiverse.io/quarkus-hivemq-client/dev/index.html[HiveMQ Client] +* link:https://docs.quarkiverse.io/quarkus-artemis/dev/quarkus-artemis-jms.html[Artemis Core & JMS] +* link:https://docs.quarkiverse.io/quarkus-google-cloud-services/main/pubsub.html[Google Cloud Pubsub] + +== Quarkus Messaging Development Model +Quarkus simplifies message-driven application development by establishing a uniform model for publishing, consuming, and processing messages, regardless of whether the underlying broker technology uses message queuing or event streaming. +Built upon the MicroProfile Reactive Messaging specification, Quarkus Messaging extensions ensure seamless integration with these technologies. +Importantly, proficiency in reactive programming is NOT a prerequisite for leveraging these capabilities. + +The Reactive Messaging specification defines a CDI-based programming model for implementing event-driven and message-driven applications. +Using a small set of annotations, CDI beans become building blocks for implementing interactions with message brokers. +These interactions happen through _channels_ where application components read and write messages. + +_Channels_ are identified by a unique name and declared using a set of annotations. + +=== `@Incoming` and `@Outgoing` annotations +`@Incoming` and `@Outgoing` method annotations define _channels_ allowing to consume messages from and produce messages to the message broker: + +[source, java] +---- +import jakarta.enterprise.context.ApplicationScoped; + +import org.eclipse.microprofile.reactive.messaging.Incoming; +import org.eclipse.microprofile.reactive.messaging.Outgoing; + +@ApplicationScoped +public class MessageProcessingBean { + + @Incoming("source") + @Outgoing("sink") + public String process(String consumedPayload) { + // Process the incoming message payload and return an updated payload + return consumedPayload.toUpperCase(); + } + +} +---- + +`@Outgoing` can be used by itself on a method to generate messages: + +[source, java] +---- +import jakarta.enterprise.context.ApplicationScoped; + +import org.eclipse.microprofile.reactive.messaging.Incoming; +import org.eclipse.microprofile.reactive.messaging.Message; +import org.eclipse.microprofile.reactive.messaging.Outgoing; + +@ApplicationScoped +public class MessageGeneratorBean { + + @Outgoing("sink") + public Multi generate() { + return Multi.createFrom().items("a", "b", "c"); + } + +} +---- + +`@Incoming` can be used by itself to consume messages: + +[source, java] +---- +import jakarta.enterprise.context.ApplicationScoped; + +import org.eclipse.microprofile.reactive.messaging.Incoming; +import org.eclipse.microprofile.reactive.messaging.Message; +import org.eclipse.microprofile.reactive.messaging.Outgoing; + +@ApplicationScoped +public class MessageProcessingBean { + + @Incoming("source") + public void process(String consumedPayload) { + // process the payload + consumedPayload.toUpperCase(); + } + +} +---- + +[IMPORTANT] +==== +Note that you should not call methods annotated with `@Incoming` and/or `@Outgoing` directly from your code. +They are invoked by the framework. +Having user code invoking them would not have the expected outcome. +==== + +You can read more on supported method signatures in the link:{rm_doc_method_signatures}[SmallRye Reactive Messaging – Supported signatures]. + +=== Emitters and `@Channel` annotation + +An application often needs to combine messaging with other parts of the application, ex. produce messages from HTTP endpoints, or stream consumed messages as a response. + +To send messages from imperative code to a specific channel, you need to inject an `Emitter` object identified by the `@Channel` annotation: + +[source, java] +---- +import org.eclipse.microprofile.reactive.messaging.Channel; +import org.eclipse.microprofile.reactive.messaging.Emitter; + +@ApplicationScoped +@Path("/") +public class MyImperativeBean { + + @Channel("prices") + Emitter emitter; + + @GET + @Path("/send") + public CompletionStage send(double d) { + return emitter.send(d); + } +} +---- + +The `@Channel` annotation lets you indicate to which channel you will send your payloads or messages. +The `Emitter` allows buffering messages sent to the channel. + +For more control, using link:{mutiny}[Mutiny] APIs, you can use the `MutinyEmitter` emitter interface: + +[source, java] +---- +import io.smallrye.mutiny.Multi; +import org.eclipse.microprofile.reactive.messaging.Channel; +import org.eclipse.microprofile.reactive.messaging.MutinyEmitter; + +@ApplicationScoped +@Path("/") +public class MyImperativeBean { + + @Channel("prices") + MutinyEmitter emitter; + + @GET + @Path("/send") + public void send(double d) { + emitter.sendAndAwait(d); + } + +} +---- + +The `@Channel` annotation can also be used to inject the stream of messages from an incoming channel: + +[source, java] +---- +import org.eclipse.microprofile.reactive.messaging.Channel; + +@ApplicationScoped +@Path("/") +public class SseResource { + + @Channel("prices") + Multi prices; + + @GET + @Path("/prices") + @RestStreamElementType(MediaType.TEXT_PLAIN) + public Multi stream() { + return prices; + } + +} +---- + +When consuming messages with `@Channel`, the application code is responsible for subscribing to the stream. +In the example above, the Quarkus REST (formerly RESTEasy Reactive) endpoint handles that for you. + +You can read more on the emitters and channels in the link:{rm_doc_emitter}[SmallRye Reactive Messaging – Emitter and Channels] documentation. + +=== Messages and Metadata +A `Message` is an envelope around a payload. +In the examples above only payloads were used, but every payload is wrapped around a `Message` internally in Quarkus Messaging. + +The `Message` interface associates a payload of type `` with `Metadata`, +a set of arbitrary objects and asynchronous actions for acknowledgement (ack) and negative acknowledgement (nack). + +[source, java] +---- +import org.eclipse.microprofile.reactive.messaging.Message; + +@Incoming("source") +@Outgoing("sink") +public Message process(Message consumed) { + // Access the metadata + MyMetadata my = consumed.getMetadata(MyMetadata.class).get(); + // Process the incoming message and return an updated message + return consumed.withPayload(consumed.getPayload().toUpperCase()); +} +---- + +A message is acknowledged back to the broker when its processing or reception has been successful. +Acknowledgements between messages are chained, meaning that when processing a message, +the acknowledgement of an outgoing message triggers the acknowledgement of incoming message(s). +In most cases, acks and nacks are managed for you and connectors allow you to configure different strategies per channel. +So, you usually don't need to interact with the `Message` interface directly. +Only advanced use cases require dealing with the Message directly. + +Accessing the `Metadata`, on the other hand, can be practical in many cases. +Connectors add specific metadata objects to the message to give access to the message headers, properties, and other connector-specific information. +You do not need to interact with the `Message` interface to access connector-specific metadata. +You can simply inject the metadata object as a method parameter after the payload parameter: + +[source, java] +---- +import org.eclipse.microprofile.reactive.messaging.Metadata; +@Incoming("source") +@Outgoing("sink") +public String process(String payload, MyMetadata my) { + // Access the metadata + Map props = my.getProperties(); + // Process the payload and return an updated payload + return payload.toUpperCase(); +} +---- + +Depending on the connector, payload types available to consume in processing methods differ. +You can implement a custom `MessageConverter` to transform the payload to a type that is accepted by your application. + +=== Channel configuration + +Channel attributes can be configured using the `mp.messaging.incoming.` and `mp.messaging.outgoing.` configuration properties. + +For example, to configure the Kafka connector to consume messages from the `my-topic` topic with a custom deserializer: + +[source, properties] +---- +mp.messaging.incoming.source.connector=smallrye-kafka +mp.messaging.incoming.source.topic=my-topic +mp.messaging.incoming.source.value.deserializer=org.apache.kafka.common.serialization.StringDeserializer +mp.messaging.incoming.source.auto.offset.reset=earliest +---- + +The `connector` attribute is required for all channels and specifies the connector to use. +You can omit this configuration if you have a single connector on your classpath, as Quarkus will automatically select the connector. + +Global channel attributes can be configured using the connector name: + +[source, properties] +---- +mp.messaging.connector.smallrye-kafka.bootstrap.servers=localhost:9092 +---- + +Connector-specific attributes are listed in connector documentation. + +=== Channel wiring and Messaging patterns + +At startup time, Quarkus analyzes declared channels to wire them together and verify that all channels are connected. +Concretely, each channel creates a _reactive stream_ of messages connected to another channel's _reactive stream_ of messages. +Adhering to the reactive stream protocol, the back-pressure mechanism is enforced between channels, allowing to control application resource usage and not over-commit and overloading part of the system. + +On the flip side it is NOT possible to create new channels programmatically at runtime. +There are, however, many patterns that let you implement most, if not all, messaging and integration use cases: + +[IMPORTANT] +==== +Some messaging technologies allow consumers to subscribe to a set of topics or queues, and producers to send messages to a specific topic on message basis. +If you are sure you need to configure and create clients dynamically at runtime, you should consider using the low-level clients directly. +==== + +==== Internal Channels + +In some use cases, it is convenient to use messaging patterns to transfer messages inside the same application. +When you don't connect a channel to a messaging backend, i.e. a connector, everything happens internally to the application, +and the streams are created by chaining methods together. +Each chain is still a reactive stream and enforces the back-pressure protocol. + +The framework verifies that the producer/consumer chain is complete, +meaning that if the application writes messages into an internal channel (using a method with only `@Outgoing`, or an `Emitter`), +it must also consume the messages from within the application (using a method with only `@Incoming` or using an unmanaged stream). + +==== Enable/Disable channels + +All defined channels are enabled by default, but it is possible to disable a channel with the configuration: + +[source, properties] +---- +mp.messaging.incoming.my-channel.enabled=false +---- + +This can be used alongside Quarkus build profiles to enable/disable channels based on some build-time condition, such as the the target environment. +You need to make sure of two things when disabling a channel: + +- the disabled channel usage is located in a bean that can be filtered out at build time, +- that without the channel, the remaining channels still work correctly. + +[source, java] +---- +@ApplicationScoped +@IfBuildProfile("my-profile") +public class MyProfileBean { + + @Outgoing("my-channel") + public Multi generate() { + return Multi.createFrom().items("a", "b", "c"); + } + +} +---- + +==== Multiple Outgoings and `@Broadcast` + +By default, messages transmitted in a channel are only dispatched to a single consumer. +Having multiple consumers is considered an error and is reported at deployment time. + +The `@Broadcast` annotation changes this behavior and indicates that messages transiting in the channel are dispatched to all the consumers. +`@Broadcast` must be used with the `@Outgoing` annotation: + +[source, java] +---- +import org.eclipse.microprofile.reactive.messaging.Broadcast; +import org.eclipse.microprofile.reactive.messaging.Outgoing; + +@Incoming("in") +@Outgoing("out") +@Broadcast +public int increment(int i) { + return i + 1; +} + +@Incoming("out") +public void consume1(int i) { + //... +} + +@Incoming("out") +public void consume2(int i) { + //... +} +---- + +Similarly to `@Broadcast`, you can use `@Outgoing` annotation multiple times on the same method to indicate that the method produces messages to multiple channels: + +[source, java] +---- +import org.eclipse.microprofile.reactive.messaging.Incoming; +import org.eclipse.microprofile.reactive.messaging.Outgoing; + +@Incoming("in") +@Outgoing("out1") +@Outgoing("out2") +public String process(String s) { + // send messages from channel in to both channels out1 and out2 + return s.toUpperCase(); +} +---- + +Using Multiple Outgoings can be useful for implementing fan-out patterns, in which a single message is processed by multiple target channels. + +You can selectively dispatch messages to multiple outgoings by returning `Targeted` from the processing method: + +[source, java] +---- +@Incoming("in") +@Outgoing("out1") +@Outgoing("out2") +@Outgoing("out3") +public Targeted process(double price) { + // send messages from channel-in to both channel-out1 and channel-out2 + Targeted targeted = Targeted.of("out1", "Price: " + price, "out2", "Quote: " + price); + if (price > 90.0) { + return targeted.with("out3", price); + } + return targeted; +} +---- + +==== Multiple Incomings and `@Merge` + +By default, a single producer can transmit messages in a channel. +Having multiple producers is considered erroneous and is reported at deployment time. +The `@Merge` annotation changes this behavior and indicates that a channel can have multiple producers. +`@Merge` must be used with the `@Incoming` annotation: + +[source, java] +---- +@Incoming("in1") +@Outgoing("out") +public int increment(int i) { + return i + 1; +} + +@Incoming("in2") +@Outgoing("out") +public int multiply(int i) { + return i * 2; +} + +@Incoming("out") +@Merge +public void getAll(int i) { + //... +} +---- + +Similarly to `@Merge`, you can use `@Incoming` annotation multiple times on the same method to indicate that the method consumes messages from multiple channels: + +[source, java] +---- +@Incoming("in1") +@Incoming("in2") +public String process(String s) { + // get messages from channel-1 and channel-2 + return s.toUpperCase(); +} +---- + + +==== Stream Processing + +In some advanced scenarios, you can manipulate directly the stream of messages instead of each individual message. + +Using link:{mutiny}[Mutiny APIs] in incoming and outgoing signatures allow you to process the stream of messages: + +[source, java] +---- +import io.smallrye.mutiny.Multi; +import org.eclipse.microprofile.reactive.messaging.Incoming; +import org.eclipse.microprofile.reactive.messaging.Outgoing; + +@ApplicationScoped +public class StreamProcessor { + + @Incoming("source") + @Outgoing("sink") + public Multi process(Multi in) { + return in.map(String::toUpperCase); + } + +} +---- + +== Execution Model + +Quarkus Messaging sits on top of the xref:quarkus-reactive-architecture.adoc#engine[reactive engine] of Quarkus and leverages link:{eclipse-vertx}[Eclipse Vert.x] to dispatch messages for processing. +It supports three execution modes: + +* *Event-loop*, where messages are dispatched on the Vert.x I/O thread. +Remember that you should not perform blocking operations on the event loop. +* *Worker-threads*, where messages are dispatched on a worker thread pool. +* *Virtual-threads*, where messages are dispatched on a virtual thread (requires Java 21+). +As virtual threads are not pooled, a new virtual thread is created for each message. +Please refer to the dedicated xref:messaging-virtual-threads.adoc[Quarkus Virtual Thread support] guide for more information. + +Quarkus chooses the default execution mode based on the method signature. +If the method signature is _synchronous_, messages are dispatched on *worker threads* otherwise it defaults to *event-loop*: + +|=== +|Method signature |Default execution mode + +|@Incoming("source") +void process(String payload) +|Worker-threads + +|@Incoming("source") +Uni process(String payload) +|Event-loop + +|@Incoming("source") +CompletionStage process(Message message) +|Event-loop + +|@Incoming("source") +@Outgoing("sink") +Multi process(Multi in) +| Stream-processing methods are executed at startup, then each message is dispatched on event loop. + +|=== + +Fine-grained control over the execution model is possible using annotations: + +* link:{rm_blocking_annotation}[`@Blocking`] will force the method to be executed on a worker thread pool. +The default pool of worker threads is shared between all channels. +Using `@Blocking("my-custom-pool")` you can configure channels with a custom thread pool. +The configuration property `smallrye.messaging.worker.my-custom-pool.max-concurrency` specifies the maximum number of threads in the pool. +You can read more on the blocking processing in link:{rm_blocking_docs}[SmallRye Reactive Messaging documentation]. +* `@NonBlocking` will force the method to be executed on the event-loop thread. +* `@RunOnVirtualThread` will force the method to be executed on a virtual thread. +To leverage the lightweight nature of virtual threads, the default maximum concurrency for methods annotated with `@RunOnVirtualThread` is 1024. +This can be changed by setting the `smallrye.messaging.worker..max-concurrency` configuration property +or using together with the `@Blocking("my-custom-pool")` annotation. + +The presence of `@Transactional` annotation implies blocking execution. + +In messaging applications, produced and consumed messages constitute an ordered stream of events, +either enforced by the broker (inside a topic or a queue) +or by the order of reception and emission in the application. +To preserve this order, Quarkus Messaging dispatches messages sequentially by default. +You can override this behavior by using `@Blocking(ordered = false)` or `@RunOnVirtualThread` annotation. + +=== Incoming Channel Concurrency + +Some connectors support configuring the concurrency level of incoming channels. + +[source, properties] +---- +mp.messaging.incoming.my-channel.concurrency=4 +---- + +This creates four copies of the incoming channel under the hood, wiring them to the same processing method. +Depending on the broker technology, this can be useful to increase the application's throughput by processing multiple messages concurrently +while still preserving the partial order of messages received in different copies. +This is the case, for example, for Kafka, where multiple consumers can consume different topic partitions. + +== Health Checks + +Together with the Smallrye Health extension, Quarkus Messaging extensions provide health check support per channel. +The implementation of _startup_, _readiness_ and _liveness_ checks depends on the connector. +Some connectors allow configuring the health check behavior or disabling them completely or per channel. + +Channel health checks can be disabled using `quarkus.messaging.health..enabled` or per health check type, +ex. `quarkus.messaging.health..liveness.enabled`. + +Setting the `quarkus.messaging.health.enabled` configuration property to `false` completely disables the messaging health checks. + +== Observability + +=== Micrometer Metrics + +Quarkus Messaging extensions provide simple but useful metrics to monitor the health of the messaging system. +The xref:telemetry-micrometer.adoc[Micrometer extension] exposes these metrics. + +The following metrics can be gathered per channel, identified with the `channel` tag: + +* `quarkus.messaging.message.count` : The number of messages produced or received +* `quarkus.messaging.message.acks` : The number of messages processed successfully +* `quarkus.messaging.message.failures` : The number of messages processed with failures +* `quarkus.messaging.message.duration` : The duration of the message processing + +For backwards compatibility reasons, channel metrics are not enabled by default and can be enabled with: `smallrye.messaging.observation.enabled=true`. + +=== OpenTelemetry Tracing + +Some Quarkus Messaging connectors integrate out-of-the-box with OpenTelemetry Tracing. +When the xref:opentelemetry.adoc[OpenTelemetry extension] is present, outgoing messages propagate the current tracing span. +On incoming channels, if a received message contains tracing information, the message processing inherits the message span as parent. + +You can disable tracing for a specific channel using the following configuration: + +[source, properties] +---- +mp.messaging.incoming.data.tracing-enabled=false +---- + +== Testing + +=== Testing with Dev Services + +Most Quarkus Messaging extensions provide a Dev Service to simplify the development and testing of applications. +The Dev Service creates a broker instance configured to work out-of-the-box with the Quarkus Messaging extension. + +During testing Quarkus creates a separate brok er instance to run the tests against it. + +You can read more about Dev Services in the xref:dev-services.adoc[Dev Services] guide, including a list of Dev Services provided by platform extensions. + +=== Testing with InMemoryConnector + +It can be useful to test the application without starting a broker. +To achieve this, you can _switch_ the channels managed by a connector to _in-memory_. + +IMPORTANT: This approach only works for JVM tests. It cannot be used for native tests (because they do not support injection). + +Let's say we want to test the following sample application: + +[source, java] +---- +import org.eclipse.microprofile.reactive.messaging.Channel; +import org.eclipse.microprofile.reactive.messaging.Emitter; +import org.eclipse.microprofile.reactive.messaging.Incoming; +import org.eclipse.microprofile.reactive.messaging.Message; +import org.eclipse.microprofile.reactive.messaging.Outgoing; + +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; + +@ApplicationScoped +public class MyMessagingApplication { + + @Inject + @Channel("words-out") + Emitter emitter; + + public void sendMessage(String out) { + emitter.send(out); + } + + @Incoming("words-in") + @Outgoing("uppercase") + public Message toUpperCase(Message message) { + return message.withPayload(message.getPayload().toUpperCase()); + } + +} +---- + +First, add the following test dependency to your application: + +[source,xml,role="primary asciidoc-tabs-target-sync-cli asciidoc-tabs-target-sync-maven"] +.pom.xml +---- + + io.smallrye.reactive + smallrye-reactive-messaging-in-memory + test + +---- + +[source,gradle,role="secondary asciidoc-tabs-target-sync-gradle"] +.build.gradle +---- +testImplementation("io.smallrye.reactive:smallrye-reactive-messaging-in-memory") +---- + +Then, create a Quarkus Test Resource as follows: + +[source, java] +---- +public class InMemoryConnectorLifecycleManager implements QuarkusTestResourceLifecycleManager { + + @Override + public Map start() { + Map env = new HashMap<>(); + Map props1 = InMemoryConnector.switchIncomingChannelsToInMemory("words-in"); // <1> + Map props2 = InMemoryConnector.switchOutgoingChannelsToInMemory("uppercase"); // <2> + Map props3 = InMemoryConnector.switchOutgoingChannelsToInMemory("words-out"); // <3> + env.putAll(props1); + env.putAll(props2); + env.putAll(props3); + return env; // <4> + } + + @Override + public void stop() { + InMemoryConnector.clear(); // <5> + } +} +---- +<1> Switch the incoming channel `words-in` (consumed messages) to in-memory. +<2> Switch the outgoing channel `words-out` (produced messages) to in-memory. +<3> Switch the outgoing channel `uppercase` (processed messages) to in-memory. +<4> Builds and returns a `Map` containing all the properties required to configure the application to use in-memory channels. +<5> When the test stops, clear the `InMemoryConnector` (discard all the received and sent messages) + +Create a `@QuarkusTest` using the test resource created above: + +[source, java] +---- +import io.quarkus.test.common.QuarkusTestResource; +import io.quarkus.test.junit.QuarkusTest; +import io.smallrye.reactive.messaging.memory.InMemoryConnector; +import io.smallrye.reactive.messaging.memory.InMemorySink; +import io.smallrye.reactive.messaging.memory.InMemorySource; + +import org.eclipse.microprofile.reactive.messaging.spi.Connector; +import org.junit.jupiter.api.Test; + +import jakarta.inject.Inject; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.awaitility.Awaitility.await; + +@QuarkusTest +@QuarkusTestResource(InMemoryConnectorLifecycleManager.class) +class MyMessagingApplicationTest { + + @Inject + @Connector("smallrye-in-memory") + InMemoryConnector connector; // <1> + + @Inject + MyMessagingApplication app; + + @Test + void test() { + InMemorySink wordsOut = connector.sink("words-out"); // <2> + InMemorySource wordsIn = connector.source("words-in"); // <3> + InMemorySink uppercaseOut = connector.sink("uppercase"); // <4> + + app.sendMessage("Hello"); // <5> + assertEquals("Hello", wordsOut.received().get(0).getPayload()); // <6> + + wordsIn.send("Bonjour"); // <7> + await().untilAsserted(() -> assertEquals("BONJOUR", uppercaseOut.received().get(0).getPayload())); // <8> + } +} + +---- +<1> Inject the in-memory connector in your test class, using the `@Connector` or `@Any` qualifier. +<2> Retrieve the outgoing channel (`words-out`) - the channel must have been switched to in-memory in the test resource. +<3> Retrieve the incoming channel (`words-in`) +<4> Retrieve the outgoing channel (`uppercase`) +<5> Use the injected application bean to call `sendMessage` method to send a message using the emitter with the channel `words-out`. +<6> Use the `received` method on `words-out` in-memory channel to check the message produced by the application. +<7> Use the `send` mwthod on `words-in` in-memory channel to send a message. +The application will process this message and send a message to `uppercase` channel. +<8> Use the `received` method on `uppercase` channel to check the messages produced by the application. + +[IMPORTANT] +==== +In-memory connector is solely intended for testing purposes. +There are some caveats to consider when using the in-memory connector: + +- The in-memory connector only transmits objects (payloads or configured messages) sent using the `InMemorySource#send` method. +Messages received by the application methods won't contain connector-specific metadata. +- By default, in-memory channels dispatch messages on the caller thread of the `InMemorySource#send` method, which would be the main thread in unit tests. +However, most of the other connectors handle context propagation dispatching messages on separate duplicated Vert.x contexts. + +The `quarkus-test-vertx` dependency provides the `@io.quarkus.test.vertx.RunOnVertxContext` annotation, which when used on a test method, executes the test on a Vert.x context. + +If your tests are dependent on context propagation, you can configure the in-memory connector channels with `run-on-vertx-context` attribute to dispatch events, including messages and acknowledgements, on a Vert.x context. +Alternatively you can switch this behaviour using the `InMemorySource#runOnVertxContext` method. + +==== + +== Going further + +This guide shows the general principles of Quarkus Messaging extensions. + +If you want to go further, you can check the link:{rm_doc}[SmallRye Reactive Messaging] documentation, +which has in-depth documentation for each of these concepts and more. diff --git a/_versions/main/guides/native-reference.adoc b/_versions/main/guides/native-reference.adoc index 09cc190e96..8c7d741a5a 100644 --- a/_versions/main/guides/native-reference.adoc +++ b/_versions/main/guides/native-reference.adoc @@ -2255,7 +2255,7 @@ To work around that issue, add the following line to the `application.properties [source, properties] ---- -quarkus.native.additional-build-args=-march=compatibility +quarkus.native.march=compatibility ---- Then, rebuild your native executable. diff --git a/_versions/main/guides/security-jwt.adoc b/_versions/main/guides/security-jwt.adoc index 7015c4be95..101fd58958 100644 --- a/_versions/main/guides/security-jwt.adoc +++ b/_versions/main/guides/security-jwt.adoc @@ -1106,6 +1106,7 @@ SmallRye JWT provides more properties which can be used to customize the token p |smallrye.jwt.keystore.verify.key.alias||This property has to be set to identify a public verification key which will be extracted from `KeyStore` from a matching certificate if `mp.jwt.verify.publickey.location` points to a `KeyStore` file. |smallrye.jwt.keystore.decrypt.key.alias||This property has to be set to identify a private decryption key if `mp.jwt.decrypt.key.location` points to a `KeyStore` file. |smallrye.jwt.keystore.decrypt.key.password||This property may be set if a private decryption key's password in `KeyStore` is different to `smallrye.jwt.keystore.password` when `mp.jwt.decrypt.key.location` points to a `KeyStore` file. +|smallrye.jwt.resolve-remote-keys-at-startup|false|Set this property to true to resolve the remote keys at the application startup. |=== == References