Full-stack Bike-focused Navigation App and Service
.
├── Client
├── Router
└── docker-compose.yml
-
Redis is used as a cache.
-
ActiveMQ is used as a queue.
-
The Router is a CoreWCF API server.
- The router contains two callable methods from WCF:
- `RouteResponse GetBikeRoute(string origin, string destination);``
- Obtain the detailed directions directly from the SOAP request.
- `RouteResponseWithoutSegments GetBikeRouteWithQueue(string origin, string destination);``
- Obtain the directions from a queue.
- An identifier is contained within the response so that the client to poll the queue for the results.
- `RouteResponse GetBikeRoute(string origin, string destination);``
- The router uses a custom handler for HTTP requests.
- The handler intercepts a Cache TLL header and caches the response in Redis.
- The router contains two callable methods from WCF:
-
The Client is a Java heavy client.
- It connects to the Router to send requests and receive responses.
- It connects to ActiveMQ to poll for the detailed directions.
- Add JCDecaux API key and Google Maps API key to
Router/Properties/launchSettings.json
- Start Redis and ActiveMQ
docker compose build
then run them
docker compose up
- Run the Router
dotnet run --project Router/Router.csproj
- Run the Client
cd Client && mvn clean package && mvn exec:exec