1. Uplink Configuration Structure
Located at config.uplink:
enabled: Master switch (Default true)producer: Producer parameters (compression/batching)- Event mapping:
deviceConnected/deviceDisconnected/telemetry/attributes
Each mapping:
| Field | Description |
|---|---|
topic | Pulsar topic template (Handlebars) |
key | partition_key template (Handlebars), if empty not set |
payload | EnvelopeJson/Kv/TimeseriesRows/MappedJson |
2. Default topic/key
topic:persistent://public/default/ng.uplink.{{event_kind}}.{{device_name}}key:{{device_id}}
Template syntax see:
3. Producer Parameters
| Field | Default | Description |
|---|---|---|
compression | lz4 | none/lz4/zlib/zstd/snappy |
batchingEnabled | true | Whether to enable batching (Default off, avoid "Latency/Order" surprise for new users) |
batchingMaxMessages | 1000 | Effective when batching enabled |
batchingMaxBytes | 131072 | Effective when batching enabled (128KiB) |
batchingMaxPublishDelayMs | 10 | Effective when batching enabled |
TIP
Recommend enabling batching for high throughput scenarios; keep off or reduce publish delay for low latency scenarios.
4. Properties and Event Time
Pulsar uplink will:
partition_key: From rendered keyproperties: Carry RenderContext key-values (For diagnosis/filtering)event_time: Use millisecond timestamp (Telemetry/Attributes use collection time)
