Skip to content

Callback server in Rust working with Redis streams

License

Notifications You must be signed in to change notification settings

mrtstg/vk-callback-rs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vk-callback-rs

О проекте

vk-callback-rs - многопоточный callback-сервер для ВКонтакте на базе actix-web и перемещающий события в поток redis (redis streams).

Общий принцип работы

Приложение имеет два вида потоков - потоки actix'а и обработчики. Потоки actix-web предназначены для базовой валидации данных и их помещения в отдельную очередь, откуда их берут обработчики и передают в поток redis. При большом количестве сообщений и малом количестве обработчиков передача сообщений может осуществляться с задержкой.

Сами сообщения хранятся в формате message - событие ВКонтакте строкой. Таким образом, десериализация данных в JSON лежит на клиенте, осуществляющем чтение.

Прочая информация

  • Вы можете ознакомиться с примером деплоя сервера здесь.
  • На Docker hub есть собранный образ сервера.
  • По умолчанию сервер ищет конфиг в папке, в которой находится
  • У сервера есть URI /health, по которому он отдает строку "ok" для примитивных healthcheck-проверок

Config variables

Пример конфига расположен в папке deployment

Переменная Описание
server_ip Обрабатываемый сервером адрес (0.0.0.0 - все подключения)
server_port Порт, на котором сервер будет работать
log_level Уровень логирования
workers_amount Количество потоков actix
handlers_amount Количество обработчиков
redis_connections Количество соединений с redis в пуле подключений
redis_url URL подключения к redis
group_id Айди группы
confirmation Ключ подтверждения
secret Секретный ключ
stream_name Название потока, куда сервер будет передавать сообщения
stream_length Ограничение длины стрима

Также, вы можете установить переменную конфигурации через виртуальное окружение, для этого сделайте запись в секции [env_mapping].

Например, при строке

log_level="LOG_LEVEL"

Сервер в первую очередь проверит переменную окружения под именем "LOG_LEVEL" и если ее не окажется он возьмет переменную из конфига.

TODO

  • Кастомный путь к файлу конфигурации
  • Автоматическое получениe group_id, confirmation
  • Возможность обработки без secret
  • Возможность отключения пропуска повторных сообщений

About

Callback server in Rust working with Redis streams

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published