eventbus: pub/sub поверх Redis с типизированным Event-конвертом
(id/type/service/occurred_at/actor/payload). At-most-once семантика
(Redis pub/sub без offset'ов). Конвенция топиков: "{service}.{event}".
Publisher autopopulate'ит id (UUID4), service и occurred_at.
PublishTyped[T] — helper для маршалинга typed payload-структуры.
redisx: shared go-redis клиент с едиными pool/timeout-опциями
(заменяет дубли в booking/deals/hhru/webhooks-apps).
28 lines
1.1 KiB
Modula-2
28 lines
1.1 KiB
Modula-2
// Shared библиотека для микросервисов портала.
|
|
// Содержит: db (pgxpool init + slow-query tracer), middleware (InternalAuth),
|
|
// portal (HTTP-клиент portal-сервиса), audit (общий event log).
|
|
//
|
|
// Используется из tasks/, candidates/, booking/, meet/, leaders-reports/,
|
|
// telephony/, hhru/, webhooks-apps/, deals/. Каждый сервис ссылается на
|
|
// `gitea.estateliga.work/admin/portal-common` через go.mod replace
|
|
// в dev-сборке (см. README.md в репозитории).
|
|
module gitea.estateliga.work/admin/portal-common
|
|
|
|
go 1.25.7
|
|
|
|
require (
|
|
github.com/google/uuid v1.6.0
|
|
github.com/jackc/pgx/v5 v5.9.1
|
|
github.com/redis/go-redis/v9 v9.16.0
|
|
)
|
|
|
|
require (
|
|
github.com/cespare/xxhash/v2 v2.3.0 // indirect
|
|
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
|
github.com/jackc/pgpassfile v1.0.0 // indirect
|
|
github.com/jackc/pgservicefile v0.0.0-20240606120523-5a60cdf6a761 // indirect
|
|
github.com/jackc/puddle/v2 v2.2.2 // indirect
|
|
golang.org/x/sync v0.17.0 // indirect
|
|
golang.org/x/text v0.29.0 // indirect
|
|
)
|