Skip to content

MongkonEiadon/VehicleTracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

65 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vehicle Tracker Application (Microservice)

Vehicle Tracking sample microservice designed by CQRS Architechture, and ES (Event Sourcing) based on EventFlow, and .NET Core framework on the EntityFramework with SQL Server also Dockerize Linux supported

Build Status

Introduction

This is example for running various microservice in case of Vehicle Tracking. The plateform ran on .NET Core framework with Linux compatible. And designed along the dockerize concept with convenince way to use. And the core concept of CQRS that brought up by EventFlow that I spent a lot of time to learning it.

The Architecture

I'm not know well about Microservices concept, while you can help me to make it better way, however when I've look back to the starting.. It's very painful to re-thinking what CQRS is, OverallArchitecture

How to up the services

Now every services setting up on docker compose file, you can easier run it by simple steps;

$ cd src
$ docker-compose up

Swagger supported

You can have a look exposed endpoint by calling:

# -------Exposed API with Ocelot-------
http://localhost:6543/swagger

EventSourcingMetadata

How Microservices can know each others

So when every single microservice emitting from them aggregate (aka. VehicleAggregate) them always produce single event and store to EventSourcing by itself. That mean other service didn't know what happend on that service, so we will communicate with RabbitMq following this simple work flow

EventSourcingMetadata

and we create another sample console application to consume the event (listening the events from queue at rabbitmq), when we publishing the event will be up to the exchange stream in rabbitmq, and we need to bining to the queue that we want to consume, so this is then result when we consume the event from vehicle service with another service

EventSourcingMetadata

you can check the connections with rabbitmq management tools by go to (http://localhost:15672/#/) with test/test login/password here

EventSourcingMetadata

Example Information

This is example of event sourcing metadata EventSourcingMetadata

Milestones

  • Get/Delete/Create a Vehicle
  • Add AgreegateSnapshot
  • Custom readstore called "EFSearchableReadstore"
  • Complete API Gateway with Ocelot
  • A Sample for AggregateSaga
  • STS (Secured Token Service) with Redis and IdentityServer4
  • Implement "EventStore" instead of using "EntityFramework" to store event sourcing
  • Integrate with GoogleMap API to send near place location name

Support Me

If you've got value from any of the content which I have created, but pull requests are not your thing, then I would also very much appreciate your support by buying me a coffee.

Buy Me A Coffee