Сервис обеспечивает асинхронную обработку с сохранением порядка сообщений. Гарантируется, что если сообщение 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