New Features
- The Authentication Server now also reports the
hono.connections.attempts
metric which counts the number of authentication
attempts made by clients. - The JDBC DB based registry now also supports enforcement of registration limits configured at the tenant level.
In particular, the maximum number of devices and the maximum number of credentials per device can be set in
a tenant's registration-limits property. Please refer to the User Guide for details. - Kafka clients used by a component can now be configured individually instead of all clients of a type using the same
configuration. The prefixes that are prepended to the configuration properties of the native Kafka client have
changed. For existing configuration properties prefixed withhono.kafka.commonClientConfig
properties, no change is
needed. Other configurations with specific consumer/producer/admin client properties have to be adapted. Please refer
to the Hono Kafka Client Configuration Guide for details. - The protocol adapters now include a ttl header/property in every message being forwarded, regardless of message
type. This allows a consumer of a message to easily determine if the message should be processed or considered
expired already. The device registry supports the definition of default ttl values for the different types of
messages at both the tenant and device level. Please refer to the Tenant API for details regarding the
corresponding default property names to use.
Fixes & Enhancements
- The number of credits that the Mongo DB based registry would flow to a newly connected client could not be set using
the documented environment variableHONO_CREDENTIALS_SVC_RECEIVERLINKCREDIT
. Instead, the initial link credit can be
configured using environment variableHONO_REGISTRY_AMQP_RECEIVERLINKCREDIT
. The Mongo DB based registry's admin guide
has been updated accordingly. - When using Kafka messaging, there could possibly be an exception during startup of the Command Router component,
meaning the component was potentially only available after a number of startup attempts. This has been fixed. - The Quarkus based variant of the Lora protocol adapter did not start up unless the
HONO_LORA_COMMANDENABLEDTENANTS
environment variable had been set. This has been fixed by removing this (unused) variable from the Lora adapter
altogether. - All downstream messages that can be consumed via Hono's north bound APIs now include a
creation-time
header
which indicates the point in time at which the message has been created. - The error messages returned by protocol adapters when sending commands received via Kafka now include a reasonable
error description. - The tenant's configuration property
auto-provisioning-device-id-template
is now extended to support more
subjectDN's attributes namely Organizational Unit Name (OU) and Organization Name (O). For more information
please refer to the Device Registry Management API. - The container images published by the Hono project are now built on top of Java 17 base images provided by the
Eclipse Temurin project. - The Hono container images released with tag 1.10.0 failed to start up when not running as user
root
because the
Java process was lacking authority to create a temporary directory in the file system's root folder (/
).
This has been fixed. - Command response messages published via Kafka did not contain the
tenant_id
header. This has been fixed. - Hono's components now support configuring the ciphers used in the TLS handshake when connecting to Infinispan servers.
For the Command Router component remote data grid configuration this can be done by setting thehono.commandRouter.cache.remote.sslCiphers
property. - When using Kafka messaging, the Hono components will now retry creating the Kafka clients in case the Kafka bootstrap
server URLs are not yet resolvable. This will prevent unnecessary restarts of the Hono components during initial
deployment. - The native image variant of the Command Router component failed to connect to an Infinispan server using SASL
SCRAM. This has been fixed. - The lora adapter supports unconfirmed uplink data for the firefly provider.
- The poll timeout used by the Kafka consumer clients in the Hono components can now be configured individually.
Please refer to the Hono Kafka Client Configuration Guide for details.
Deprecations
- The Spring Boot based variant of the protocol adapters has been deprecated and marked for removal in Hono 2.0.0.
- The Kura 3 protocol adapter has been deprecated and marked for removal in Hono 2.0.0. Support for Kura version 4 and
later is still available by means of Hono's standard MQTT adapter.
API Changes
- The
hono.kafka.defaultClientIdPrefix
configuration property needs to be removed from existing configurations.
Configuring parts of the created Kafka client identifiers should usually not be needed any more. To still set a custom
part, theclient.id
property value may be used instead. It is adopted as prefix for created client identifiers. - A new API for notifications among Hono components has been introduced. For Hono deployments using an AMQP messaging
network, it has to be made sure that addresses with thenotification/
prefix are configured to use multicast.
See thetests/src/test/resources/qpid/qdrouterd-with-broker.json
file for an example Qpid Dispatch Router
configuration.