General re-try and re-connect guidelines
Your devices and applications interacting with Bosch IoT Things need to be able to bridge small interruptions or latencies. On the one hand, this requirement is imposed by the fact that we work with distributed systems. On the other hand, your devices and application will also highly depend on the network services of other providers and should not break in case they are not able to keep connections with our infrastructure; at least for short time.
In order to be able to identify cases, where your request might not have reached our service, we recommend
orienting on the exception you might receive upon a request.
The status code returned from the Bosch IoT Things service might help to indicate, whether the failure is transient or not. You might need to examine the exceptions generated by the client in use. For example, the Ditto client provides exceptions in HTTP status code semantics, such that you can analyze and interpret the exception.
The following HTTP status codes typically indicate that a re-try is appropriate:
- 408 Request Timeout
- 424 Dependency Failed
- 429 Too Many Requests
- 500 Internal Server Error
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
No matter whether you request our service via the Bosch IoT Things HTTP API, WebSockets, or Ditto protocol, in case of exceptions we provide the same status codes.
All usage of our service by APIs should apply a systematic approach
for managing re-tries incl. an exponential back-off, as well as re-connects.
Ideally, you should prepare for reusable code, so that you can apply a consistent methodology across all clients and all applications.