workers-queues
Impl of workers for users tasks queues based on Vapor
- Сообщения в очереди хранятся в виде строка сообщения и параметры в формате JSON;
- Есть watcher/worker который каждые 5 секунд пробует доставать параметры из очереди;
- Класс, который мы запихиваем в очередь – должен реализовывать статический метод perform;
- У сервиса очередь должна быть функция dump, которая сохраняет все данные в БД sqlite;
- У сервиса должна быть функция restore – сервис принимает команду restore и загружает данные в память из БД. При этом данные в БД и те, что находятся уже в памяти – не должны пересекаться;
- Сервис слушает команду dump;
- В конфигурационном файле на сервисе мы задаем периодичность дампа.
Additional: Добавить поддержку нескольких воркеров (кол-во в конфиге). Каждый воркер имеет набор очередей;
- все сообщения и очереди храним в redis, сообщение сериализуется в формат json;
- для каждого воркера задаем очереди, которые он обрабыватывает клиент решает, в какой очереди обрабытывать таск и передает имя очереди в сообщении;
- у очередей есть приоритеты - реализовать корректную работы с приоритетами;
- все работы реализуют интерфейс Ibasejob, который имеет 1 метод Perform