New features
- The HTTP protocol adapter now allows authenticated gateway devices to omit the tenant ID from the URI of requests
used to upload telemetry, event or command response messages. - The CoAP protocol adapter now allows authenticated gateway devices to omit the tenant ID from the URI of requests
used to upload telemetry, event or command response messages. - The AMQP protocol adapter now allows authenticated gateway devices to omit the tenant ID from the address of
messages used to upload telemetry or event messages. - The MQTT protocol adapter now allows authenticated gateway devices to omit the tenant ID from the topic of
messages used to upload telemetry or event messages. - The CoAP adapter now exposes its resources using short endpoint name alternatives to the existing resources.
Using the short endpoint names, devices can save a few bytes per request. - The protocol adapters now support a configuration property for explicitly setting the percentage of the heap memory
not to be used for maintaining device connections. This can be used to tune the adapter's memory utilization with
regard to the overall amount of memory available to the JVM and the characteristics of the garbage collector being
used.
Fixes & Enhancements
- The Quarkus variant of the MongoDB based device registry failed to start up if the hono.mongodb.dbName property
was not set. However, the DB name should not be required if a connection string is set using the
hono.mongodb.connectionString property. This has been fixed. - When a tenant or device gets disabled or deleted, any open AMQP or MQTT connections from clients having authenticated
themselves as belonging to that tenant or device are getting closed now. - Using OpenSSL with the Quarkus based variant of Hono components did not work as described in the Secure Communication
guide. This has been fixed. - The connection pool configuration for the HotRod client in the Quarkus variant of the Command Router component
didn't support using property names in camel-case. This has been fixed. - HonoConnectionImpl instances failed to release/close the underlying TCP/TLS connection when its disconnect or
shutdown method had been invoked. This has been fixed. - The LoraWAN protocol adapter has been extended with support for Live Objects provider.
- In the Quarkus variants of the MongoDB device registry and the Hono auth component, the provided metrics did not
contain the default set of tags, as used in the other Hono components (e.g. host or component-name). This has been
fixed. - The device registry components now support the reporting of Kafka client metrics.
- The Java source code level of the Hono code has been raised from 11 to 17. This also means that a JDK version 17 or
later is required for building and running Hono. - The mechanism to delete obsolete
hono.command_internal.*
Kafka topics could have deleted still used topics in
case the Kubernetes API server gave information about the running containers with a delay of several seconds. This has
been fixed. - The native executable based images of protocol adapters failed to deserialize a registration assertion if it included command
endpoint information that had been configured for the device. This has been fixed.
API Changes
- The MQTT adapter no longer accepts the
+
wild card character for the tenant ID in a topic filter used for
subscribing to commands. - Support for configuration properties that had been marked as deprecated in Hono versions before 2.0.0 has been
removed. - The Kura protocol adapter has been removed. Eclipse Kura gateways starting with version 4 can still connect to Hono
using Hono's standard MQTT adapter. - The file based device registry has been removed.
- The Spring Boot based variant of the AMQP protocol adapter has been removed.
- The Spring Boot based variant of the HTTP protocol adapter has been removed.
- The Spring Boot based variant of the MQTT protocol adapter has been removed.
- Usage and implementations of the Device Connection API have been removed.
- The Spring Boot based variant of the Command Router has been removed.
- The amqp-device client has been moved from the client module to the new client-device-amqp module. The
org.eclipse.hono.client.device.amqp.AmqpAdapterClientFactory
class is superseded by the new
org.eclipse.hono.client.device.amqp.AmqpAdapterClient
class. - Removed deprecated startServiceClient, stopServiceClient and updateLastGateway methods of class
org.eclipse.hono.adapter.AbstractProtocolAdapterBase. - Removed deprecated org.eclipse.hono.util.BufferResult class.
- Removed deprecated org.eclipse.hono.service.http.AbstractEventBusHttpEndpoint class.
- The client module has been removed. Its deprecated classes have been removed and the remaining classes have been
moved to the client-common, amqp-connection and amqp-common modules. The classes for configuring AMQP client
connections have been moved from the core to the amqp-connection module. - The core module no longer supports Java 8 but has been changed to require at least Java 17 as all the other modules.
- The core module is no longer an OSGi bundle.
- The
org.eclipse.hono.service.auth.AuthenticationService
's method signatures have been changed to return a Future
instead of accepting aHandler<AsyncResult>
. - The
org.eclipse.hono.client.amqp.connection.ConnectionFactory
's method signatures have been changed to return a Future
instead of accepting aHandler<AsyncResult>
. - Removed unused classes
org.eclipse.hono.util.EventBusMessage
andorg.eclipse.hono.util.MessageTap
. - Moved
org.eclipse.hono.util.BaseMessageFilter
to service-base module. - Moved
org.eclipse.hono.util.AmqpErrorException
to amqp-connection client module. - Moved
org.eclipse.hono.util.TimeUntilDisconnectNotification
to application client module. - The
org.eclipse.hono.util.RequestResponseResult
class hierarchy's dependency on the Proton-JApplicationProperties
class
has been removed. Instead, the constructors now accept a standard Map containing the properties. - Moved several AMQP 1.0 specific constants from
org.eclipse.hono.util.Constants
to
org.eclipse.hono.client.amqp.connection.AmqpConstants
in the amqp-connection client module. - Moved the code for injecting and extracting a tracing context to/from AMQP 1.0 messages to the amqp-connection
client module. - Moved
org.eclipse.hono.util.TelemetryExecutionContext
to adapter-base module. - The amqp-device client module no longer supports including arbitrary properties in telemetry, event and command
response messages because it was undefined how these properties would be processed by the AMQP protocol adapter. - The application client module no longer supports including arbitrary properties in command messages
because it was undefined how these properties would be processed by the Hono components. - The order of the method parameters of the
org.eclipse.hono.application.client.CommandSender
interface have been changed
so that mandatory parameters come first. - The hono-service-base-quarkus module has been removed. Its content has been integrated in the hono-service-base module.
- The hono-adapter-base-quarkus module has been removed. Its content has been integrated in the hono-adapter-base module.
- The amqp-device client no longer requires supplying a tenant ID when creating a client or invoking any of its
methods. - The Hono components now export tracing data using the OpenTelemetry Protocol (OTLP). See the
Monitoring & Tracing guide for details on how to configure the trace sampling and the OpenTelemetry Collector
endpoint to send the traces to. Thejaeger
Maven build profile used for including the Jaeger client in the Hono images has
been removed. In order to forward Hono traces to a Jaeger back-end, the OpenTelemetry Collector should be configured accordingly. - The Hono components now support reading and writing trace context information from and to messages exchanged with
other applications in the format defined by the W3C Trace Context and the
W3C Baggage specifications. The Jaeger native propagation format used in earlier Hono
versions is not supported any more. - The Hono command line client has been re-implemented using the Picocli framework. The synopsis of the client has been
changed to provide for a richer user experience. The Getting Started guide has been updated to use the new command
line client as well. - The Hono protocol adapter, command router and device registry Maven modules and Docker images have been renamed,
removing the -vertx and -quarkus parts from the names. - The hono-adapters-quarkus and hono-services-quarkus Maven modules, used as parent modules for protocol adapter
and service implementations, have been renamed to hono-adapters-parent and hono-services-parent, respectively. - The hono.messages metrics have been renamed to hono.telemetry and hono.messages.received has been renamed to
hono.telemetry.processing.duration. - The hono.commands metrics have been renamed to hono.command.
- The hono.downstream metrics have been renamed to hono.amqp, hono.downstream.sent has been renamed to
hono.amqp.delivery.duration and hono.downstream.full has been renamed to hono.amqp.nocredit. - Hono’s service components and protocol adapters now use the Quarkus SmallRye Health extension to implement the health
check and metrics endpoints. That means the health check server configuration is now done via the corresponding Quarkus
configuration properties and not via hono.healthCheck properties any more. See the Monitoring & Tracing guide for details on how to
configure the health check server.
Deprecations
- Support for implementing readiness and liveness checks based on Vert.x Health Checks has been deprecated and will be
removed in a future version. New health checks should be implemented according to MicroProfile Health.