Skip to content

Latest commit

 

History

23 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сервис подписок, работающий по принципу Publisher-Subscriber

Описание сервиса

Сервис обеспечивает асинхронную обработку с сохранением порядка сообщений. Гарантируется, что если сообщение 1 было отправлено раньше, чем сообщение 2, то сообщение 1 будет обработано раньше, чем сообщение 2

Для демонстрации работы написан также клиент, который отправляет и получает сообщения. Сам по себе клиент не является обязательной частью сервиса

Запуск сервиса

Чтобы запустить клиент + сервер следует прописать следующие команды:

git clone git@github.com:MafiaLogiki/vk-test.git
cd vk-test
make

Для запуска только сервера достаточно заменить make на make server

Выключение сервиса

Для отключения сервиса следует прописать команду make down

Настройка сервиса

По умолчанию используются следующие порты:

Порт
Клиент 8089
Сервер 8090

Для настройки сервиса требуется написать свой .env файл следующего вида:

SERVER_IS_DEBUG=
SERVER_LISTENER_HOST=
SERVER_LISTENER_PORT=
 
CLIENT1_PORT=
CLIENT1_HOST=

*_IS_DEBUG - изменяет уровень логирования, чтобы было видно дебаг информацию

*_PORT - порт, с которым работает сервис

*_HOST - хост сервиса

Проверить все переменные окружения можно с помощью make config

Методы сервиса

Название метода Параметры Описание Возвращаемое значение Коды возврата
Subscribe SubscribeRequest - структура, которая хранит в себе ключ, по которому будут приходить сообщения Подписывает пользователя на тему. Требуется запускать в отдельной горутине, так как функция должна работать на фоне Возвращает поток, в который будут приходить значения, отправленные с помощью Publish по конкретному ключу. Поток содержит в себе структуру Event с полем Data, в котором содержится отправленное сообщение INTERNAL в случае ошибки, OK если запрос успешен
Publish PublishRequest - структура, которая хранит поля Key - ключ, по которуму отправляется сообщение и Data - сообщение, которое нужно передать Публикует сообщение по ключу Возвращает пустую структуру INTERNAL в случае ошибки, OK, если запрос успешен

Тесты

Для subpub пакета написаны unit тесты. Для их запуска следует запустить следующую команду:

make tests

Требования

  • Go 1.24
  • Docker
  • Docker compose
  • Make

About

Test task for vk intership

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages