This microservice is in charge of taking in plane frame messages and, upon command (the tick message), it combines the given moment's set of plane info and supplys that via web api and rabbit message.
A brief description of each of the processes.
This process handles data intake for the service, in the form of a PlaneFrameMessage.
This process handles the compilation of plane data, prompted by the TickMessage. The final result of this compilation is stored and published as a rabbit message.
This task is timed and its duration is reported via Metrics.
This process is a web api to expose the compiled plane information to interested parties.
Clone this repository and run with dotnet run --project Application/Application.csproj
This project requires dotnet 6 sdk to run (install link here).
When running locally, I have the rabbit password replaced using the dotnet user-secrets tool. Please follow Microsoft's guide to set the value of rabbit_pass to your configured rabbit account's password for the Applications.csproj.
This project uses the MelbergFramework nuget package, please see my github for more info.
| Product | Details | Database Install Link |
|---|---|---|
| InfluxDB | You will need a bucket called plane_data, change the InfluxDBContext value of the ConnectionStrings section of appsettings.json. | Docker installation guide for influxdb here. |
| Redis | Update the PlaneCacheContext value of the ConnectionStrings section of appsettings.json. | Docker installation guide for redis here. |
| RabbitMQ | The code will create the exchanges, queues, and bindings for you, just update the Rabbit:ClientDeclarations:Connections:0 details in appsettings.json. Note that this will not give you access to the incoming data stream, please reach out to me if interested. To trigger the Plane Compiler, send a message to the Clock exchange following the binding as described by the appsettings.json file. | Docker installation guide for RabbitMQ here. |