You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
With the Ditto Signal Enrichment it is possible to dynamically configure for a single subscriber of "Thing Events" (whenever a Thing is modified) to get additional fields, which were not part of the change.
For example, all attributes or a special attribute which is required for the event consumer to have a context.
This works and is great.
However, this is also quite "costly" for Ditto - as the Gateway (for SSE and WebSocket) or Connectivity service of Ditto has to do another "internal" round-trip to fetch those extraFields. There are optimizations in place in order to cache them in a "smart cache" (which updates itself, etc.), but in the worst case, e.g. if the cache is full, this means a lot of roundtrips and networking.
There are scenarios when specific fields are always needed - that's why I suggest to configure (in the things service configuration) pre-defined extraFields which are pro-actively always sent in a DittoHeader field.
When the Connection or WebSocket "demands" this extraField (and e.g. no other), it can just use it from this header without additional roundtrips.
This should be configurable on a namespace level.
Example configuration:
pre-defined-extra-fields = [
{
namespaces = [
"*"
]
condition = "exists(definition)"# could be an option to also support a RQL condition hereextra-fields = [
"definition"
]
},
{
namespaces = [
"org.eclipse.ditto.lamps"
]
extra-fields = [
"attributes/manufacturer",
"attributes/serial"
]
}
]
One example use case behind this:
We want to always get the definition of a Thing to "know" its current thing model (and semantic version of it)
The text was updated successfully, but these errors were encountered:
With the Ditto Signal Enrichment it is possible to dynamically configure for a single subscriber of "Thing Events" (whenever a Thing is modified) to get additional fields, which were not part of the change.
For example, all
attributes
or a specialattribute
which is required for the event consumer to have a context.This works and is great.
However, this is also quite "costly" for Ditto - as the Gateway (for SSE and WebSocket) or Connectivity service of Ditto has to do another "internal" round-trip to fetch those
extraFields
. There are optimizations in place in order to cache them in a "smart cache" (which updates itself, etc.), but in the worst case, e.g. if the cache is full, this means a lot of roundtrips and networking.There are scenarios when specific fields are always needed - that's why I suggest to configure (in the
things
service configuration) pre-definedextraFields
which are pro-actively always sent in a DittoHeader field.When the Connection or WebSocket "demands" this extraField (and e.g. no other), it can just use it from this header without additional roundtrips.
This should be configurable on a namespace level.
Example configuration:
One example use case behind this:
definition
of a Thing to "know" its current thing model (and semantic version of it)The text was updated successfully, but these errors were encountered: