Message-Based Systems email-microservice and generates a reverse-proxy server which translates a RESTful JSON
Advantages of Message-Based Systems are: The sender only needs to know the location of the message broker, not the addresses of all possible receivers. It’s possible to have multiple receivers for a message. We can easily add new receivers without any changes in the sender. Messages can be queued, ensuring delivery after a receiver has been down.
Go, gRPC Clean Architecture microservice, gRPC Getway
- GRPC - gRPC
- GRPC Getway - GRPC Getway
- sqlx - Extensions to database/sql.
- pgx - PostgreSQL driver and toolkit for Go
- viper - Go configuration with fangs
- zap - Logger
- validator - Go Struct and Field validation
- migrate - Database migrations. CLI and Golang library.
- testify - Testing toolkit
- gomock - Mocking framework
- CompileDaemon - Compile daemon for Go
- Docker - Docker
- Prometheus - Prometheus
- Grafana - Grafana
- Jaeger - Jaeger tracing
- Bluemonday - HTML sanitizer
- Gomail - Simple and efficient package to send emails
- Go-sqlmock - Sql mock driver for golang to test database interactions
- Go-grpc-middleware - interceptor chaining, auth, logging, retries and more
- Opentracing-go - OpenTracing API for Go
- Prometheus-go-client - Prometheus instrumentation library for Go applications
make local // run all containers
make run // run the application
docker-compose.local.yml - run postgresql, jaeger, prometheus, grafana containers
docker-compose.yml - run all in docker
make docker
make local
make run
protoc
-I=/usr/local/include
-I=./proto
-I=${GOPATH}/src
-I=${GOPATH}/src/grpc-gateway/third_party/googleapis
--go_out=plugins=grpc:./proto
--grpc-gateway_out=logtostderr=true:./proto
./proto/*.proto