refactor: simplify mqtt pipeline state and remove event table
All checks were successful
Deploy to Production / deploy (push) Successful in 4m55s
All checks were successful
Deploy to Production / deploy (push) Successful in 4m55s
This commit is contained in:
@@ -176,7 +176,8 @@ Once you have the MJML extension installed, you can create a new email template
|
||||
This project includes a two-stage MQTT pipeline:
|
||||
|
||||
- `mqtt-ingestor` subscribes to `terminal/{device_id}/raw` and stores payload bytes losslessly in `terminal_message_raw`.
|
||||
- `mqtt-parser-worker` consumes pending rows and writes parsed events/state.
|
||||
- `mqtt-parser-worker` consumes unparsed rows (`parsed_at IS NULL` and `parse_error IS NULL`) and updates `terminal_device_state`.
|
||||
- Parse is single-pass by design in the current implementation: failed rows keep `parse_error` and are not auto-retried with backoff.
|
||||
|
||||
### Run locally with Docker Compose
|
||||
|
||||
@@ -199,7 +200,6 @@ $ PYTHONPATH=. ../.venv/bin/pytest tests/mqtt --confcutdir=tests/mqtt -q
|
||||
2. Publish a sample message to `terminal/device-001/raw`.
|
||||
3. Query PostgreSQL tables:
|
||||
- `terminal_message_raw`
|
||||
- `terminal_observation_event`
|
||||
- `terminal_device_state`
|
||||
|
||||
### Archive run (manual trigger)
|
||||
|
||||
Reference in New Issue
Block a user