REST-Side Satellite Configuration (Enterprise)
The REST-side satellite configuration is used when MAPS communicates with multiple remote satellite modems via a provider REST API (Inmarsat, Orbcomm, Viasat).
This side is responsible for:
- Polling the provider mailbox for inbound messages
- Encoding and dispatching outbound messages
- Routing decoded messages into MAPS topic namespaces
- Managing per-device backpressure and message lifetime
SIN-Based Routing Overview (Read This First)
All satellite message routing in MAPS is decided solely by the SIN value before any topic or namespace processing occurs.
Routing rules:
- SIN = 147 → MAPS application message
- SIN ≠ 147 → Common (non-MAPS) satellite message
MAPS does not inspect payload contents to determine routing class.
If the SIN is wrong, routing will be wrong.
Common Message Publish Roots (SIN ≠ 147)
commonInboundPublishRoot
Defines the topic template where decoded inbound common messages are published.
Default
/{deviceId}/common/in/{sin}/{min}
{sin}and{min}are extracted from the message- Used for modem control, status, position, and provider payloads
commonOutboundPublishRoot
Defines the topic root MAPS monitors for outbound common messages.
Default
/{deviceId}/common/out/#
- Messages published here are encoded as common satellite messages
- Wildcards are allowed
- Publishing MAPS payloads here will result in incorrect encoding
MAPS Message Publish Roots (SIN = 147)
mapsInboundPublishRoot
Defines where decoded inbound MAPS messages are published.
Default
/{deviceId}/maps/in/{namespace}/#
{namespace}is extracted from the MAPS payload- Mapped directly into the broker namespace
mapsOutboundPublishRoot
Defines where outbound MAPS messages must be published.
Default
/{deviceId}/maps/out/{namespace}/#
- Messages published here are encoded as MAPS messages
- SIN is automatically forced to 147
Complete Configuration Reference
Base Satellite Fields
| Field | Description |
|---|---|
incomingMessagePollInterval | Poll interval (seconds) for inbound mailbox messages |
outgoingMessagePollInterval | Flush interval (seconds) for outbound messages |
maxBufferSize | Maximum allowed payload size (bytes) |
compressionCutoffSize | Payload size threshold above which compression is applied |
messageLifeTimeInMinutes | Message time-to-live before expiry |
sharedSecret | Optional shared secret for payload signing/encryption |
sendHighPriorityMessages | Bypass queueing for urgent messages (may incur extra cost) |
sinNumber | MAPS SIN number. Must be greater than 128 (default: 147) |
REST-Specific Fields
| Field | Description |
|---|---|
baseUrl | Satellite provider REST API base URL |
httpRequestTimeout | HTTP request timeout (seconds) |
maxInflightEventsPerDevice | Maximum queued events per device |
mailboxId | Provider mailbox identifier |
mailboxPassword | Provider mailbox password |
deviceInfoUpdateMinutes | Device metadata refresh interval (minutes) |
Topic Routing Fields (Critical)
| Field | Description |
|---|---|
commonInboundPublishRoot | Inbound topic template for decoded common messages |
commonOutboundPublishRoot | Outbound topic root for common messages |
mapsInboundPublishRoot | Inbound topic template for decoded MAPS messages |
mapsOutboundPublishRoot | Outbound topic root for MAPS messages |
outboundBroadcast | Topic used to broadcast messages to all modems |
Example Configuration
- name: "Inmarsat REST Interface"
protocol: satellite
auth: anon
url: satellite://inmarsat:0/
baseUrl: "http://localhost:8085/iotMessaging/v1"
mailboxId: "mailbox-001"
mailboxPassword: "mailbox-secret"
incomingMessagePollInterval: 10
outgoingMessagePollInterval: 60
httpRequestTimeout: 30
maxInflightEventsPerDevice: 2
messageLifeTimeInMinutes: 10
sharedSecret: "this is a shared secret"
commonInboundPublishRoot: "/{deviceId}/common/in/{sin}/{min}"
commonOutboundPublishRoot: "/{deviceId}/common/out/#"
mapsInboundPublishRoot: "/{deviceId}/maps/in/{namespace}/#"
mapsOutboundPublishRoot: "/{deviceId}/maps/out/{namespace}/#"
outboundBroadcast: "/inmarsat/broadcast"
Defaults and Enforced Minimums
| Field | Minimum | Default |
|---|---|---|
incomingMessagePollInterval | 10s | 10s |
outgoingMessagePollInterval | 15s | 60s |
deviceInfoUpdateMinutes | 10 min | 15 min |