2020-07-30 - End-to-end acknowledgements and further news on thing ID
The latest Bosch IoT Things service update brings news and improvements for the Bosch IoT Suite for Asset Communication package.
End-to-end acknowledge handling for connectivity
In some IoT use cases, the processing of requests is important and needs to be guaranteed. The new feature of the Things service supports to control this behaviour from an end-to-end perspective. This includes the processing within the Things service, but also the delivery and processing within other services, which listen to the digital twins managed within Bosch IoT Things.
The guaranteed processing is controlled using acknowledgements.
On all connections to the Things service for receiving operations/messages, you can define the required acknowledgement. The events emitted by Things will include the information about your required acknowledgement. The emitting of events to the respective connections (like AMQP, MQTT, Apache Kafka, or HTTP) can directly confirm such an acknowledgment, if the target system confirms to have received it.
The following acknowledgements can be used:
Built-in acknowledgements: twin-persisted
An acknowledgement with this label is issued, when a modifying command has successfully updated the digital twin in the Things service persistence.
Custom acknowledgement labels: you-name-it
In addition to the built-in acknowledgement requests, a received event can contain custom acknowledgement labels. The event subscriber can detect that an acknowledgement was requested (via the “requested-acks” header), and - as far as it feels responsible for handling it - it issues an acknowledgement.
With end-to-end acknowledgements, we provide a quality of service guarantee of “at least once” (aka QoS 1) when processing operations/messages in an end-to-end manner for the Bosch IoT Suite. For example, a processed message from the Bosch IoT Hub will be technically acknowledged only after it was successfully applied in the Things service, and potentially also in 3rd-party applications. Without successful processing, the re-delivery mechanisms of Bosch IoT Hub will apply, according the QoS level set there.
Find details at Acknowledgements.
As of now, the ACK is implemented for the twin channel only. The live channel does not support this concept yet.
Some special characters allowed in thing ID and policy ID
The Device Provisioning API has introduced support for more characters in the thing ID and policy ID of your digital twin.
While in previous versions, the Bosch IoT Things needed to restrict using special characters in IDs and keys, which might be part of the URL when requesting the thing, the latest service update comes with some relaxing news.
The current, still valid restrictions for thing ID and policy ID at a glance:
must be unique and follow the pattern namespace:name
max. 256 characters
may not contain the slash character /
may not contain the control characters hex 00-1F to 7F-FF
may contain special characters, but these have to be encoded/decoded according to the standard/format required for the respective communication channel
This will make it possible to decide at provisioning time, if you need for example an empty space, or literally the %20 in your thing ID and policy ID.
Find an example for decoding and encoding of special characters in section Register a device via the Device Provisioning API with a special character in the ID.
Single quotes in RQL for quoting Strings
Eclipse Ditto brings in new support for single quotes in filters. When you already have to provide a query, e.g. as Java quoted String, it is easier and more readable to use single quotes instead of double quotes.
Now, your query may look like this: eq(attributes/foo,'bar')
At this occasion, various minor bugs have also been fixed.