RTA Stream Service#
This service is part of the RTA Toolkit Services suite.
It provides a WebSocket for streaming session updates so that McLaren ATLAS can display live data.
It reads data from Redis. There is no gRPC interface, and the outward-facing WebSocket interface should be exposed to users either directly or via the Gateway Service.
This service is available as a binary for Windows and Linux, and as a Docker image.
Usage#
Docker#
docker run --rm \
-e RTA_RedisConnectionString=myredishost \
-p 80:80 -p 443:443 \
mclarenapplied/rta-streamsvc
Command Line#
rta-streamsvc --RedisConnectionString myredishost
Ports#
| Port | Protocol | Usage |
|---|---|---|
| 80 | HTTP | Expose to ATLAS via the Gateway Service or TLS-enabled ingress |
| 443 | HTTPS | Expose to ATLAS directly, or via Gateway Service or TLS-enabled ingress |
Monitoring#
- HTTP
GET / - Returns
200 OKand reports the software version. In Kubernetes, use this for liveness probes. - HTTP
GET /health - Returns
200 OKif the service is up and Redis is accessible.
In Kubernetes, use this for readiness probes. - HTTP
GET /metrics - Prometheus metrics, including the health check status.
Configuration#
Options can be set using both environment variables and command line arguments, or by the provided appsettings.config JSON configuration file.
Environment variables are all prefixed with RTA_, and can be written in ALLCAPS or MixedCase.
For example, RedisConnectionString is RTA_REDISCONNECTIONSTRING or RTA_RedisConnectionString.
For Linux and on Kubernetes, also replace : with __.
For example, Category:Item is RTA_CATEGORY__ITEM.
| Option | Value | Required | Default |
|---|---|---|---|
RedisConnectionString |
Redis connection string | yes | |
RedisDb |
Redis database id | no | 0 |
Trimmer#
The trimmer caps the length of Redis streams to limit memory consumption.
The TargetStreamLength should be set according to the data rate, data source, Redis instance size, and how long it takes for data to be flushed to storage in the deployment.
| Option | Value | Required | Default |
|---|---|---|---|
EnableTrimmer |
true or false |
no | true |
Trimmer:TargetStreamLength |
Target number of entries in each Redis stream | no | 10000 |
Trimmer:Interval |
Interval (sec) between stream trimming | no | 30 |
Trimmer:ApproxLength |
Approx trimming (true or false) |
no | false |
Authentication and Authorization#
These options enable OAuth 2.0 support.
| Option | Value | Required |
|---|---|---|
EnableAuth |
true or false |
no |
Auth:Authority |
OAuth2 authorization server | if EnableAuth=true |
Auth:Audience |
OAuth2 audience | if EnableAuth=true |