Skip to content

2.0.0

Compare
Choose a tag to compare
@sophokles73 sophokles73 released this 13 Jul 09:19
· 474 commits to master since this release

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 a Handler<AsyncResult>.
  • The org.eclipse.hono.client.amqp.connection.ConnectionFactory's method signatures have been changed to return a Future
    instead of accepting a Handler<AsyncResult>.
  • Removed unused classes org.eclipse.hono.util.EventBusMessage and org.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-J ApplicationProperties 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. The jaeger 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.