31 lines
999 B
Plaintext
31 lines
999 B
Plaintext
|
|
@startuml
|
||
|
|
participant Agent as agent
|
||
|
|
participant "MQTT Broker (raw\ntopic)" as mqtt1
|
||
|
|
participant "Edge Service" as edge
|
||
|
|
participant "MQTT\nBroker (processed\ntopic)" as mqtt2
|
||
|
|
participant "Hub Service" as hub
|
||
|
|
participant "Redis" as redis
|
||
|
|
participant "Store API" as store
|
||
|
|
participant "PostgreSQL" as db
|
||
|
|
participant "MapView Client" as mapview
|
||
|
|
|
||
|
|
agent -> mqtt1 : Publish raw\ntelemetry
|
||
|
|
mqtt1 -> edge : Deliver raw\nmessage
|
||
|
|
edge -> edge : Validate\nAgentData
|
||
|
|
edge -> edge : Process\ntelemetry
|
||
|
|
edge -> mqtt2 : Publish\nprocessed data
|
||
|
|
mqtt2 -> hub : Deliver processed\nmessage
|
||
|
|
hub -> hub : Validate\nProcessedAgentData
|
||
|
|
hub -> redis : LPUSH to buffer
|
||
|
|
hub -> redis : LPOP batch item
|
||
|
|
redis -> hub : Return item
|
||
|
|
hub -> store : POST batch
|
||
|
|
store -> db : INSERT records
|
||
|
|
db --> store : Return created\nrecords
|
||
|
|
store -> mapview : WebSocket push
|
||
|
|
mapview -> mapview : Sort by timestamp
|
||
|
|
mapview -> mapview : Update vehicle\nmarker
|
||
|
|
mapview -> mapview : Add pothole/bump\nmarker
|
||
|
|
store --> hub : Success response
|
||
|
|
@enduml
|