Files
2026-04-13 08:10:14 +03:00

31 lines
1.0 KiB
Go

package events
import "log/slog"
// EventBus — интерфейс шины событий приложения.
// Чистый pub/sub брокер без внешних зависимостей.
// Сервисы сами публикуют события и подписываются на них.
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)
}