| ID | product.ingestion.command_router.delivery_engine |
|---|---|
| Description | Sends commands and waits for ack within deadline. |
| Key | delivery_engine |
| Type | component |
| Team | Ingestion |
| Owner | ingestion@iotgateway.example |
| Status | active |
| Technologies | Go, MQTT, Protobuf |
| Attributes | ack_deadline: 30s, max_retries: 5 |
| Tags |
The Delivery Engine is where a stored command becomes an actual MQTT message. It pulls the next command for a device, publishes it on the command topic, starts an ack timer, and decides whether the result is success, retry or failure.
At-least-once, made safe
Delivery is at-least-once, so a device can legitimately receive the same command twice (e.g. ack lost on the way back). Commands carry a stable id and devices are expected to de-duplicate on it.
failed.DELIVERY_ATTEMPT in the
Command Repository,
and command bodies are encoded with Protobuf to keep wire frames compact
for constrained devices.1 outgoing link
| Target object | Label | Link type | Relation | Raw id | Required | Description | |
|---|---|---|---|---|---|---|---|
| loads commands from | — | links | product.ingestion.command_router.command_repo | — | — |