Broadcast Service#
Broadcast Service gives your live telemetry feed highly-available replication to multiple downstream consumers, so a downstream restart, network blip, or slow consumer never costs you data — every downstream tracks its own place in the stream and catches up independently once it reconnects.
It sits between an upstream source and one or more downstream consumers. Towards its upstream source, it exposes the same ADS messages, so from the source's point of view it looks like an ordinary downstream. Towards its own downstreams, it acts as the upstream — replaying that same ADS messages — so each downstream can consume, fall behind, and recover without affecting the others.
Not the same as Bridge Service
Broadcast Service is a separate product from the Bridge Service, which decodes ATLAS quads from an ADS into Stream API packets. Broadcast Service does not decode anything — it replicates an ADS messages (which may originate from an ADS, or another Broadcast Service) to more places, with durable replay if a downstream falls behind. If you're looking for quad decoding, see the Bridge Service docs instead.
Before you start#
At minimum, every deployment needs:
- An inbound feed port — the port Broadcast Service listens on for the upstream
ADS source (
FeedPort). - At least one downstream Bridge target — Broadcast Service refuses to start if no targets are configured.
- A write-ahead log (WAL) directory — where incoming records are durably persisted so
targets can replay them (
Wal.Directory). - Enough disk for the WAL — durability comes from disk. Plan capacity around your WAL segment size and how far behind your slowest target is allowed to fall before it's caught up again.
At a glance#
| Default feed port | 9697 |
| Default metrics port | 10010 |
| Default WAL directory | ./wal |
| Config file | AppConfig.json (override the path with the CONFIG_FILE_PATH environment variable) |
Two ways to run it#
The same binary runs either way — there's no separate "standalone" build versus an "integrated" one:
dotnet run— run the host project (or published binaries) directly. It readsConfigs/AppConfig.jsonnext to the executable by default.- Docker — the shipped
Dockerfileexposes the feed port (9697) and metrics port (10010). Supply configuration via a mounted config file plusCONFIG_FILE_PATH, or viaBroadcastConfig__...environment variables.
See Getting Started for step-by-step instructions for both.
Next steps#
- Getting Started — run your first instance and confirm it's forwarding data.
- Configuration Guide — task-by-task guidance for adding targets, tuning the WAL, and overriding config with environment variables.
- Configuration Reference — the full field-by-field reference for
AppConfig.json. - Troubleshooting — diagnosing startup failures, unhealthy targets, and disk growth.