feat(llm): update
This commit is contained in:
@@ -215,9 +215,30 @@ In this case:
|
||||
- `Kind() string`:任务类型标识(job kind);改名会导致“新旧任务类型不一致”。
|
||||
- `InsertOpts() river.InsertOpts`:默认入队参数(队列、优先级、最大重试、唯一任务策略等)。
|
||||
- `UniqueID() string`(项目约定):周期任务 handle 的稳定 key;通常 `return Kind()`。
|
||||
- Template:
|
||||
```go
|
||||
type SleepArgs struct {
|
||||
Duration time.Duration `json:"duration"`
|
||||
}
|
||||
func (SleepArgs) Kind() string { return "sleep" }
|
||||
```
|
||||
|
||||
### Worker(执行器)
|
||||
|
||||
- MUST: Struct 命名格式必须为 `XxxWorker`。
|
||||
- MUST: Struct 定义上方必须添加 `// @provider(job)` 注释,以便运行 `atomctl gen provider` 自动生成注入代码。
|
||||
- MUST: Worker 必须实现 `river.Worker[T]` 接口,建议嵌入 `river.WorkerDefaults[T]` 以使用默认行为。
|
||||
- Template:
|
||||
```go
|
||||
// @provider(job)
|
||||
type SleepWorker struct {
|
||||
river.WorkerDefaults[args.SleepArgs]
|
||||
}
|
||||
|
||||
func (w *SleepWorker) Work(ctx context.Context, job *river.Job[args.SleepArgs]) error {
|
||||
return nil
|
||||
}
|
||||
```
|
||||
- `Work(ctx, job)`:执行入口;返回 `nil` 成功;返回 `error` 失败并按 River 策略重试。
|
||||
- `river.JobSnooze(d)`:延后再跑一次,且 **不递增 attempt**;适合等待外部依赖就绪/限流等。
|
||||
- `river.JobCancel(err)`:永久取消并记录原因;适合业务上永远不可能成功的情况(参数非法/语义过期等)。
|
||||
|
||||
Reference in New Issue
Block a user