gRPC сервер на Go, который реализует простую шину событий, работающую по принципу Publisher-Subscriber. Порт может быть сконфигурирован с помощью .env файла или флага -GRPC_PORT при локальном запуске.
sub_service/
┌── cmd... Основная точка входа в сервис
│ └── subpub
│ └──main.go
├── internal... Внутренности проекта
│ ├── app... Код для запуска различных компонентов приложения
│ │ └── grpc... Запуск gRPC-сервера
│ ├── config... Загрузка конфигурации
│ ├── grpc
│ │ └── handlers... gRPC-хэндлеры сервиса
│ └──logger... реализация логгера
├── proto... proto-файлы
│ ├──gen
│ │ └──go... сгенерированные go файлы
│ └──subpub.proto... proto-файл
├── subpub... реализация eventbus ✅
| ├──subpub_test.go
| └──subpub.go
├── .dockerignore
└── Dockerfile 🐳
docker/
┌── .env ⚙️
└── docker-compose.yaml 🐳
- dependency injection: зависимости, такие как логгер и gRPC сервер, передаются через конструктор в функцию
New. - graceful shutdown: метод
Stopреализует корректное завершение работы сервера с помощьюGracefulStop, что позволяет завершить активные соединения, а потом остановить сервер.
- С помощью docker
- Убедитесь что установлен Docker
- Скачайте архив с проектом или клонируйте репозиторий командой git clone по ссылке subscription_service
git clone https://github.com/yermaka-a/subscription_service.git - Выполните конфигурацию .env файла, если необходимо.
- Убедитесь, что Docker-engine запущен.
- В терминале выполните следующую команду для запуска сервиса:
docker-compose -f ./docker/docker-compose.yaml up --build - Дождитесь запуска сервиса.
- Тестирование API:
- Используйте Postman или любой другой инструмент для тестирования API, чтобы убедиться что эндпоинты работают корректно*.
- *для корректной работы добавьте subpub.proto в postman.
- С помощью командной строки
- убедитесь, что у вас установлен Go.
- В командной строке выполните следующую команду:
cd sub_service && go run cmd/subpub/main.go -GRPC_PORT=52202
- Сервис запустится на порту
52202 - Дождитесь запуска сервиса.
- Тестирование API:
- Используйте Postman или любой другой инструмент для тестирования API, чтобы убедиться что эндпоинты работают корректно*.
- *для корректной работы добавьте subpub.proto в postman.