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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions