2024-09-13 08:10:31 +00:00
|
|
|
|
# Liminator
|
|
|
|
|
|
|
|
|
|
**Liminator** - вспомогательный сервис для подсчета лимитов.
|
|
|
|
|
|
|
|
|
|
***
|
|
|
|
|
|
|
|
|
|
### Алгоритм работы
|
|
|
|
|
|
|
|
|
|
1. **Создание лимита**. Необходимо указать наименование лимита и опционально можно указать
|
|
|
|
|
контекст (провайдер, терминал и т.п.). Если лимит с таким именем уже есть будет
|
|
|
|
|
выброшена ошибка _DuplicateLimitName_
|
|
|
|
|
2. **Холдирование**. Операция заморозки определенного лимита до финализации. Возвращает значения лимитов на
|
|
|
|
|
момент холдирования. (если что-то пришло чуть позже на долю секунды, то не будет участвовать в
|
|
|
|
|
подсчете даже если запись в БД уже есть). Могут быть следующие ошибки:
|
|
|
|
|
- _LimitNotFound_ - данная ошибка будет даже если какого-то одного лимита из списка
|
|
|
|
|
переданных нет в БД
|
|
|
|
|
- _DuplicateOperation_ - данная ошибка будет передана если для связки LimitName+OperationId в
|
2024-09-18 11:53:07 +00:00
|
|
|
|
БД уже имеется запись в значении HOLD и флаг skipExistedHoldOps в настройках сервиса установлен в false
|
2024-09-13 08:10:31 +00:00
|
|
|
|
- _OperationAlreadyInFinalState_ - данная ошибка будет передана если для связки LimitName+OperationId в
|
|
|
|
|
БД уже имеется запись в значении COMMIT/ROLLBACK
|
2024-09-13 13:20:34 +00:00
|
|
|
|
- _LimitsValuesReadingException_ - данная ошибка будет передана если при подсчете лимитов произошла
|
|
|
|
|
какая-то ошибка (это значит, что холдирование уже было выполнено и нужно перезапросить значение
|
|
|
|
|
лимитов для данной операции; c установленным флагом skipExistedHoldOps можно запустить повторно
|
|
|
|
|
операцию холдирования, а найденные в БД строки по ключу limitId+operationId будут проигнорированы)
|
2024-09-13 08:10:31 +00:00
|
|
|
|
3. **Финализация операции (COMMIT/ROLLBACK)**. Применение или отмена внесенного значения. Могут быть
|
|
|
|
|
следующие ошибки:
|
|
|
|
|
- _LimitNotFound_ - данная ошибка будет даже если какого-то одного лимита из списка
|
|
|
|
|
переданных нет в БД
|
|
|
|
|
- _OperationNotFound_ - данная ошибка будет передана если для связки LimitName+OperationId в
|
|
|
|
|
БД отсутствует запись в значении HOLD
|
|
|
|
|
4. **Получение значений по лимитам.** Может быть получено как для определенной операции, так и
|
|
|
|
|
последнее актуальное значение. Могут быть следующие ошибки:
|
|
|
|
|
- _LimitNotFound_ - если переданный лимит не найден
|
2024-09-13 13:20:34 +00:00
|
|
|
|
- _LimitsValuesReadingException_ - данная ошибка будет передана если при подсчете лимитов произошла
|
|
|
|
|
какая-то ошибка
|