BaseManager

abstract class BaseManager

Базовый каркас менеджера (процесса) с единым жизненным циклом и интеграцией с PMON.

Ответственности:

  • Инициализация конфигурации и регистрация клиента PMON в beforeInit.

  • Определение точки входа run, которая последовательно вызывает beforeInit и init.

  • Унифицированная схема готовности: у каждого менеджера есть checklist. Когда все флаги чеклиста станут true, базовая реализация вызовет ready, которая отправляет сигнал готовности в PMON.

Как использовать:

  1. Наследуйтесь от BaseManager.

  2. Укажите тип менеджера в managerType.

  3. Реализуйте init, в ней запустите ваши подключения/воркеры.

  4. Объявляйте флаги готовности как var x by checklist.watch() и устанавливайте их в true по мере завершения шагов инициализации. Когда все такие флаги станут true, вызовется ready.

Потоковая модель:

  • Стандартный Checklist из ru.sydis.base не предоставляет гарантий потокобезопасности. Если флаги изменяются из разных потоков, используйте потокобезопасный вариант чеклиста или синхронизируйте записи самостоятельно.

Пример:

object GatewayManager : BaseManager() {
override val managerType = ProtoManType.GTW_MAN

var messageIsReady by checklist.watch()
var subscriptionIsReady by checklist.watch()

override fun init(args: Array<out String>) {
// ... подключение брокеров, запуск потоков ...
messageIsReady = true
subscriptionIsReady = true
}

@JvmStatic fun main(vararg args: String) = run(args)
}

See also

Constructors

Link copied to clipboard
constructor()

Properties

Link copied to clipboard
abstract val managerType: ProtoManType

Тип менеджера для телеметрии и идентификации в PMON/Kafka-протоколе.

Functions

Link copied to clipboard
fun run(args: Array<out String>)

Точка входа менеджера.