New Features
- Apache Kafka is now supported as a messaging system for command messages.
This can be enabled by configuring protocol adapters to use Hono's new Kafka-based
client. Please refer to Hono Kafka Client Configuration for details. The new Command
& Control API for Kafka defines how applications can use Apache Kafka to send command messages to devices.
Note that support for Kafka based messaging is still considered an experimental feature. - The Device Registry Management API has been extended now to support an optional unique identifier
for trust anchors belonging to a tenant. The file, JDBC and MongoDB based device registries
support this feature. Please refer to the Device registry management API for details. - The LoraWAN protocol adapter has been extended with support for The Things Stack provider.
- The LoraWAN protocol adapter now supports command and control for providers Chirpstack, Firefly and Loriot.
- Added (experimental) Quarkus based variant of the Authentication service.
- Added (experimental) Quarkus based variant of the CoAP protocol adapter.
- Added (experimental) Quarkus based variant of the Command Router component.
- The container images for the (experimental) Quarkus based variant of Hono components are now being published on
Docker Hub as well. The JVM based image names contain a-quarkus
suffix whereas the native image names contain a
-quarkus-native
suffix. Note that the Quarkus based protocol adapter images do not support using the Device
Connection service but require a connection to the Command Router service being configured instead. - The MQTT adapter now lets devices subscribe on a new error topic to get informed about errors during the processing
of telemetry, event or command response message. With such an error subscription in place, the default behaviour
on such errors is now to keep the MQTT connection open. Please refer to the MQTT Adapter User Guide for details. - The MQTT adapter now supports mapping the command payload through an external http service.
- The Command Router component has been promoted from tech preview to fully supported.
- The AMQP adapter now closes the network connection to the device if any terminal errors happen. Please refer to the
AMQP Adapter User Guide for details.
Fixes & Enhancements
- The common configuration property for setting the vert.x instance's max-event-loop-execute-time had erroneously
been documented asHONO_VERTX_MAX_EVENT_LOOP_EXECUTE_TIME_MILLIS
, accepting an integer representing the duration as
number of milliseconds. However, the correct property is namedHONO_VERTX_MAX_EVENT_LOOP_EXECUTE_TIME
and accepts an
ISO-8601 Duration string instead of an integer. - The MQTT adapter failed to handle a command response message if the corresponding tenant object wasn't available
in the cache. This has been fixed. - A failed connection attempt in the default
org.eclipse.hono.connection.ConnectionFactory
implementation could
have led to the AMQP connection not getting closed, occupying connection resources. This has been fixed. - Validation of MQTT topics containing property bags has been improved, preventing unhandled exceptions.
- The hugo themes for the Hono website and the documentation have been updated to the latest versions respectively.
In order for the site module build to succeed with thehugo
binary installed locally, the
site/homepage/themes/hugo-universal-theme
andsite/documentation/themes/hugo-theme-learn
folders need to be deleted.
They will automatically be (re-)created as part of the build. - The Infinispan client used by the protocol adapters, the Device Connection and Command Router services has been
updated to version 11.0.9. The syntax of configuration file used for defining an embedded cache in the Device
Connection and/or Command Router service has changed as documented
in the Infinispan version details. - The Command Router no longer uses the
embedded-cache
Spring profile in order to configure an embedded cache.
Instead, the Command Router determines the type of cache (embedded or remote) by means of the
HONO_COMMANDROUTER_CACHE_REMOTE_SERVERLIST
configuration variable. Please refer to the
Command Router Admin Guide for details. - The Prometheus based resource limit checks can now be configured with a time out for establishing the TCP connection
to the Prometheus server. This is useful to limit the time it takes to invoke the Prometheus Query API.
Please refer to the Protocol Adapter Common Configuration guide for details.
API Changes
- The already deprecated classes
org.eclipse.hono.service.cache.SpringBasedExpiringValueCache
and
org.eclipse.hono.service.cache.SpringCacheProvider
have been removed. - The
org.eclipse.hono.service.AbstractApplication
andorg.eclipse.hono.service.AbstractBaseApplication
classes
have been moved toorg.eclipse.hono.service.spring.AbstractApplication
andorg.eclipse.hono.service.spring.AbstractApplication
in the newly addedservice-base-spring
module respectively. - The existing
mapper
configuration has been renamed todownstream-message-mapper
. - The Command Router component now requires the configuration of a tenant service client. Please refer to
Tenant Service Connection Configuration for details.
End of Life
-
The
build-docker-image
build profile is no longer activated automatically if the docker.host Maven property
is set. This has been changed in order to prevent thebuild-docker-image
andbuild-native-image
profiles being
activated at the same time when running something likemvn clean install -Ddocker.host=tcp//host:port -Pbuild-native-image
Activating the
build-docker-image
profile by default can easily be achieved by adding-Pbuild-docker-image
to
the MAVEN_OPTS environment variable instead.