跳到主要内容

API 参考

创建 Disruptor

d, err := seqflow.New[T](opts ...Option) (*Disruptor[T], error)

选项

选项默认值说明
WithCapacity(n)1024缓冲区大小(2 的幂)
WithWriterCount(n)1并发写者数,>1 启用多写者模式
WithWaitStrategy(s)SleepingStrategy等待策略
WithMetrics(m)nil可选指标收集
WithHandler(name, h, opts...)必填注册命名 handler

方法

方法说明
Reserve(count) (int64, error)预留槽位,返回上界序列号
TryReserve(count) (int64, error)非阻塞版本
Commit(lower, upper)发布数据
RingBuffer() *RingBuffer[T]获取环形缓冲区
Listen()阻塞运行消费者
Close() error立即停止
Drain(ctx) error排空后停止

错误

错误说明
ErrInvalidReservation槽位数为 0 或超过容量
ErrCapacityUnavailableTryReserve 时缓冲区已满
ErrClosed已关闭
ErrNoHandlers未注册 handler
ErrDuplicateHandlerhandler 名称重复
ErrCyclicDependency循环依赖