Skip to content

yermaka-a/subscription_service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 

Repository files navigation

subscription service

Оглавление

  1. Описание 📑
  2. Структура проекта 📁
  3. Паттерны при разработке
  4. Как запустить

Описание 📑

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, что позволяет завершить активные соединения, а потом остановить сервер.

Как запустить

  1. С помощью docker
    1. Убедитесь что установлен Docker
    2. Скачайте архив с проектом или клонируйте репозиторий командой git clone по ссылке subscription_service git clone https://github.com/yermaka-a/subscription_service.git
    3. Выполните конфигурацию .env файла, если необходимо.
    4. Убедитесь, что Docker-engine запущен.
    5. В терминале выполните следующую команду для запуска сервиса: docker-compose -f ./docker/docker-compose.yaml up --build
    6. Дождитесь запуска сервиса.
    7. Тестирование API:
      • Используйте Postman или любой другой инструмент для тестирования API, чтобы убедиться что эндпоинты работают корректно*.
      • *для корректной работы добавьте subpub.proto в postman.
  2. С помощью командной строки
    1. убедитесь, что у вас установлен Go.
    2. В командной строке выполните следующую команду:
      • cd sub_service && go run cmd/subpub/main.go -GRPC_PORT=52202
    3. Сервис запустится на порту 52202
    4. Дождитесь запуска сервиса.
    5. Тестирование API:
      • Используйте Postman или любой другой инструмент для тестирования API, чтобы убедиться что эндпоинты работают корректно*.
      • *для корректной работы добавьте subpub.proto в postman.

About

A subscription service that implements an asynchronous event bus

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors