vk-callback-rs - многопоточный callback-сервер для ВКонтакте на базе actix-web и перемещающий события в поток redis (redis streams).
Приложение имеет два вида потоков - потоки actix'а и обработчики. Потоки actix-web предназначены для базовой валидации данных и их помещения в отдельную очередь, откуда их берут обработчики и передают в поток redis. При большом количестве сообщений и малом количестве обработчиков передача сообщений может осуществляться с задержкой.
Сами сообщения хранятся в формате message - событие ВКонтакте строкой. Таким образом, десериализация данных в JSON лежит на клиенте, осуществляющем чтение.
- Вы можете ознакомиться с примером деплоя сервера здесь.
- На Docker hub есть собранный образ сервера.
- По умолчанию сервер ищет конфиг в папке, в которой находится
- У сервера есть URI /health, по которому он отдает строку "ok" для примитивных healthcheck-проверок
Пример конфига расположен в папке 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" и если ее не окажется он возьмет переменную из конфига.
- Кастомный путь к файлу конфигурации
- Автоматическое получениe group_id, confirmation
- Возможность обработки без secret
- Возможность отключения пропуска повторных сообщений