Files

33 lines
1.1 KiB
Go
Raw Permalink Normal View History

2026-04-13 08:14:09 +03:00
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)
}