package contracts import "git.fsdpf.net/go/req" type JobService interface { Start() error Shutdown() error Restart() error Dispatch(job string, payload any, u req.User) error } type Job interface { Controller // 任务处理 Handle(any, req.User) error // OnExceeded 重试次数耗尽时由框架回调,用于清理状态。默认实现为空操作。 OnExceeded(any, req.User) error } // NoRetryError 表示不可重试的错误,job 返回此类型后框架立即标记为 exceeded,不再调度重试。 type NoRetryError struct { Err error } func (e *NoRetryError) Error() string { return e.Err.Error() } func (e *NoRetryError) Unwrap() error { return e.Err } // ErrNoRetry 将 err 包装为不可重试错误,job handler 使用此函数终止重试。 func ErrNoRetry(err error) error { return &NoRetryError{Err: err} }