Documentation
¶
Index ¶
- func NewLocalProvider[C Command[R], R any](cfg *config[C, R]) (*localProvider[C, R], error)
- type Command
- type CommandHandler
- type IDispatcher
- type Metadatable
- type Middleware
- func NewLoggingMiddleware[C Command[R], R any](logger *slog.Logger) Middleware[C, R]
- func NewMetricsMiddleware[C Command[R], R any](provider metric.MeterProvider) Middleware[C, R]
- func NewTracingMiddleware[C Command[R], R any](tp trace.TracerProvider, p propagation.TextMapPropagator) Middleware[C, R]
- type MiddlewareFunc
- type Option
- func WithLogger[C Command[R], R any](logger *slog.Logger) Option[C, R]
- func WithMeterProvider[C Command[R], R any](provider metric.MeterProvider) Option[C, R]
- func WithMiddleware[C Command[R], R any](mw ...Middleware[C, R]) Option[C, R]
- func WithPropagator[C Command[R], R any](propagator propagation.TextMapPropagator) Option[C, R]
- func WithTracerProvider[C Command[R], R any](provider trace.TracerProvider) Option[C, R]
- type Provider
- type Registry
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewLocalProvider ¶
NewLocalProvider создает новый экземпляр локального провайдера.
Types ¶
type Command ¶
type Command[R any] interface{}
Command представляет собой интерфейс-маркер для команды, параметризованный типом возвращаемого значения R. Каждая команда - это уникальный запрос на выполнение операции.
type CommandHandler ¶
CommandHandler определяет строго типизированную функцию-обработчик для команды C, которая возвращает результат типа R.
type IDispatcher ¶
type IDispatcher[C Command[R], R any] interface { Dispatch(ctx context.Context, cmd C) (R, error) Register(handler CommandHandler[C, R]) error Shutdown(ctx context.Context) error }
IDispatcher определяет основной, строго типизированный интерфейс для шины команд.
func Dispatcher ¶
func Dispatcher[C Command[R], R any](r *Registry, commandName string, opts ...Option[C, R]) (IDispatcher[C, R], error)
Dispatcher возвращает строго типизированный экземпляр диспетчера для указанного имени команды.
func NewDispatcher ¶
func NewDispatcher[C Command[R], R any](opts ...Option[C, R]) (IDispatcher[C, R], error)
NewDispatcher создает новый, готовый к использованию экземпляр диспетчера.
type Metadatable ¶
Metadatable - это интерфейс для команд, которые могут переносить метаданные. Это используется для сквозной передачи данных, таких как идентификаторы трассировки.
type Middleware ¶
Middleware определяет интерфейс для middleware шины команд.
func NewLoggingMiddleware ¶
func NewLoggingMiddleware[C Command[R], R any](logger *slog.Logger) Middleware[C, R]
NewLoggingMiddleware создает новое middleware для логирования.
func NewMetricsMiddleware ¶
func NewMetricsMiddleware[C Command[R], R any](provider metric.MeterProvider) Middleware[C, R]
NewMetricsMiddleware создает новое middleware для сбора метрик.
func NewTracingMiddleware ¶
func NewTracingMiddleware[C Command[R], R any](tp trace.TracerProvider, p propagation.TextMapPropagator) Middleware[C, R]
NewTracingMiddleware создает новое middleware для трассировки.
type MiddlewareFunc ¶
MiddlewareFunc является адаптером, позволяющим использовать обычные функции как middleware.
func (MiddlewareFunc[C, R]) Wrap ¶
func (f MiddlewareFunc[C, R]) Wrap(next Provider[C, R]) Provider[C, R]
Wrap реализует интерфейс BusMiddleware.
type Option ¶
Option определяет тип для функциональных опций, которые изменяют конфигурацию шины.
func WithLogger ¶
WithLogger возвращает опцию, которая устанавливает логгер для шины.
func WithMeterProvider ¶
func WithMeterProvider[C Command[R], R any](provider metric.MeterProvider) Option[C, R]
WithMeterProvider возвращает опцию, которая устанавливает провайдер метрик.
func WithMiddleware ¶
func WithMiddleware[C Command[R], R any](mw ...Middleware[C, R]) Option[C, R]
WithMiddleware возвращает опцию, которая добавляет один или несколько middleware в цепочку обработки.
func WithPropagator ¶
func WithPropagator[C Command[R], R any](propagator propagation.TextMapPropagator) Option[C, R]
WithPropagator возвращает опцию, которая устанавливает механизм распространения контекста.
func WithTracerProvider ¶
func WithTracerProvider[C Command[R], R any](provider trace.TracerProvider) Option[C, R]
WithTracerProvider возвращает опцию, которая устанавливает провайдер трассировки.
type Provider ¶
type Provider[C Command[R], R any] interface { // Dispatch отправляет команду на выполнение. Dispatch(ctx context.Context, cmd C) (R, error) // Register регистрирует обработчик для команды. Register(handler CommandHandler[C, R]) error // Shutdown корректно завершает работу провайдера. Shutdown(ctx context.Context) error }
Provider определяет контракт для сменных механизмов диспетчеризации команд.
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry - это потокобезопасный реестр для управления экземплярами диспетчеров.
func NewRegistry ¶
func NewRegistry() *Registry
NewRegistry создает новый экземпляр реестра диспетчеров.