app.go/condflow.go/cron.go/event_stream.go/executor.go/gobridge.go/grpc.go/job.go/mcp.go/mqtt.go/res_virtual_table.go/ws.go/controller.go/support/service.go 精简掉搬到 framework-v2 internal/handler 里的公共默认实现,只保留接口定义。
31 lines
849 B
Go
31 lines
849 B
Go
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} }
|
|
|