import
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
package events
|
||||
|
||||
import "log/slog"
|
||||
|
||||
// EventBus — интерфейс шины событий приложения.
|
||||
// Чистый pub/sub брокер без внешних зависимостей.
|
||||
// Сервисы сами публикуют события и подписываются на них.
|
||||
// Структура неэкспортируемая — создать объект можно только через NewEventBus.
|
||||
type EventBus interface {
|
||||
Publish(event string)
|
||||
Subscribe(event string, handler func())
|
||||
}
|
||||
|
||||
// eventBus — реализация шины событий.
|
||||
type eventBus struct{}
|
||||
|
||||
// NewEventBus создаёт шину событий.
|
||||
func NewEventBus() EventBus {
|
||||
slog.Info("шина событий создана")
|
||||
|
||||
return &eventBus{}
|
||||
}
|
||||
|
||||
// Publish публикует событие.
|
||||
func (b *eventBus) Publish(event string) {
|
||||
slog.Info("событие опубликовано", "event", event)
|
||||
}
|
||||
|
||||
// Subscribe подписывается на событие.
|
||||
func (b *eventBus) Subscribe(event string, handler func()) {
|
||||
slog.Info("подписка на событие", "event", event)
|
||||
}
|
||||
Reference in New Issue
Block a user