SpecsModelExplore
Overview
Actors
External Systems
IoT Platform
Edge
Ingestion
MQTT Broker
Command Router
Command RepositoryDelivery EnginePriority Queue
Stream Processing
Device Management
User-Facing Apps
Platform
SpecsModelExplore
Delivery Engine
OverviewGuideLinks and Communications
IDproduct.ingestion.command_router.delivery_engine
DescriptionSends commands and waits for ack within deadline.
Keydelivery_engine
Typecomponent
TeamIngestion
Owneringestion@iotgateway.example
Statusactive
TechnologiesGo, MQTT, Protobuf
Attributesack_deadline: 30s, max_retries: 5
Tags
Table of contents
Guide
Delivery Engine
Delivery state machine
Behaviour

Guide

Delivery Engine

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.

Delivery state machine

Behaviour

  • Commands are pulled in priority order from the Priority Queue, so urgent instructions are not stuck behind routine ones.
  • The ack deadline is 30s; up to 5 retries are attempted with backoff before a command is marked failed.
  • Every attempt is recorded as a DELIVERY_ATTEMPT in the Command Repository, and command bodies are encoded with Protobuf to keep wire frames compact for constrained devices.

Links and Communications

1 outgoing link

Outgoing Links(1)

Target objectLabelLink typeRelationRaw idRequiredDescription
Command Repository

example-iot.product.ingestion.command_router.command_repo

component:database
loads commands from—linksproduct.ingestion.command_router.command_repo——