Skip to content

события ядра и слушатели этих событий #7

@PavelAgarkov

Description

@PavelAgarkov

Это просто для примера. Нужно проанализировать каждое и додумать, заложив в интерфейс.
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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions