-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Это просто для примера. Нужно проанализировать каждое и додумать, заложив в интерфейс.
type EventName string
const (
EvBootStart EventName = "kernel.boot.start"
EvBootReady EventName = "kernel.boot.ready"
EvCompStart EventName = "kernel.component.start"
EvCompReady EventName = "kernel.component.ready"
EvCompError EventName = "kernel.component.error"
EvLeaderTaken EventName = "kernel.leader.taken"
EvLeaderLost EventName = "kernel.leader.lost"
EvCfgApplyStart EventName = "kernel.config.apply.start"
EvCfgApplied EventName = "kernel.config.apply.done"
EvCfgApplyError EventName = "kernel.config.apply.error"
EvShutdownBegin EventName = "kernel.shutdown.begin"
EvShutdownDone EventName = "kernel.shutdown.done"
EvPanicRecovered EventName = "kernel.panic.recovered"
)
Сделать eventbus к которому есть подписчики реализуя интерфейс Receive и зарегистрировавшись при инициализации. eventbus будет слать интересующие события в подписчиков публикуя их в ядре через Emit(). Для кажого слушателя отправляется событие в Receive() и он будет решать что с ним делать. События будут носить лишь системный характер, не глобавльный eventbus для бизнес логики.
внутреннюю асинхронную логику переложить на https://github.com/PavelAgarkov/rate-envelope-queue