/workers-queues

Impl of workers for user's queues of messages based on Vapor

Primary LanguageSwift

workers-queues

Impl of workers for users tasks queues based on Vapor

  1. Сообщения в очереди хранятся в виде строка сообщения и параметры в формате JSON;
  2. Есть watcher/worker который каждые 5 секунд пробует доставать параметры из очереди;
  3. Класс, который мы запихиваем в очередь – должен реализовывать статический метод perform;
  4. У сервиса очередь должна быть функция dump, которая сохраняет все данные в БД sqlite;
  5. У сервиса должна быть функция restore – сервис принимает команду restore и загружает данные в память из БД. При этом данные в БД и те, что находятся уже в памяти – не должны пересекаться;
  6. Сервис слушает команду dump;
  7. В конфигурационном файле на сервисе мы задаем периодичность дампа.

Additional: Добавить поддержку нескольких воркеров (кол-во в конфиге). Каждый воркер имеет набор очередей;

  1. все сообщения и очереди храним в redis, сообщение сериализуется в формат json;
  2. для каждого воркера задаем очереди, которые он обрабыватывает клиент решает, в какой очереди обрабытывать таск и передает имя очереди в сообщении;
  3. у очередей есть приоритеты - реализовать корректную работы с приоритетами;
  4. все работы реализуют интерфейс Ibasejob, который имеет 1 метод Perform