The first minor (feature adding) release of Eclipse Ditto 1 is finally here: 1.1.0.
It is API and binary compatible to Eclipse Ditto 1.0.0.
Compared to the latest release 1.0.0, the following changes, new features and bugfixes were added.
The default Java runtime for Ditto’s Docker containers was switched from Java 8 to Java 11 which should have some benefits in storing Strings in memory (this was already added in Java 9).
Language features of newer Java versions can now be used in the “services” part of Ditto, the Java APIs and models relevant for semantic versioning are still compatible to Java 8.
As a bachelor thesis, Erik Escher evaluated mechanisms to improve the serialization overhead done in Ditto clusters.
His findings using CBOR as an alternative to plain JSON resulted an approximate 10% improvement on roundtrip times and throughput. The Ditto team was happy to accept his pull request, again improving overall performance in Ditto.
In the past, Ditto did not evaluate the HTTP
Content-Type header of HTTP requests sending along payload. As this
can be a potential security issue (e.g. in scope of CORS requests), the
Content-Type is now strictly enforced to
application/json wherever Ditto only accepts JSON request payload.
New Ditto Protocol for search was added in order to define a search query via the Ditto Protocol and also get results via an asynchronous channel. As a result, searching for things is now also possible via WebSocket and connections (e.g. AMQP, MQTT, ..).
When subscribing change notifications or for messages to publish to external system or deliver via WebSocket it is now possible to enrich the payload with additional “extra fields” from the thing which was affected by the change.
This can be useful when e.g. only a sensor value of a device changes, but your application also needs to be aware of additional context of the affected thing (e.g. a location which does not change with each sensor update).
The Ditto community (namely Alexander Wellbrock (w4tsn) from
othermo GmbH) contributed MQTT 5 support to Ditto’s connectivity capabilities.
With that is is possible to also establish connections to MQTT 5 brokers and even apply header mapping and e.g. responses via MQTT 5’s
user properties approach.
Thank you very much for this great contribution.
Until now, messages consumed by Eclipse Ditto were processed without a guarantee. That is being addressed with this first feature addition, the model and logic in order to request and emit acknowledgements.
The follow-up issue #661 will automatically handle acknowledgements in Ditto managed connections, configured for connection sources and targets, providing QoS 1 (at least once) semantic for message processing in Ditto via connections.
Officially added+documented support of how Ditto external authentication providers may be configured to authenticate users in Ditto by adding them as an HTTP reverse proxy in front of Ditto.
Now that Ditto has a full replacement for ACLs, namely policies which now can also be managed via the Ditto Protocol and the Ditto Java client, it is time to deprecate the APIs around the ACL mechanism.
Starting with Ditto 1.1.0, usage of the API in version
1 (e.g. contained in HTTP URLs as
API version 1 and ACLs will very likely be removed in Ditto
So when you start using Ditto, please make sure to use API version
2 (using policies as
authorization mechanism) from the very beginning.
Several bugs in Ditto 1.0.0 were fixed for 1.1.0.
This is a complete list of the merged pull requests, including the fixed bugs.
Do not apply when updating from Eclipse Ditto 1.0.0 to 1.1.0.