示例 6: 触发回调监控
()
| 186 | |
| 187 | // 示例 6: 触发回调监控 |
| 188 | func demonstrateTriggerMonitoring() { |
| 189 | fmt.Println("--- 示例 6: 触发回调监控 ---") |
| 190 | |
| 191 | var triggerCount int |
| 192 | |
| 193 | scheduler := core.NewScheduler(&core.SchedulerOptions{ |
| 194 | OnTrigger: func(taskID string, spec string, kind core.TriggerKind) { |
| 195 | triggerCount++ |
| 196 | fmt.Printf(" [监控] 任务触发 - ID: %s, 类型: %s, 规格: %s\n", |
| 197 | taskID[:8], kind, spec) |
| 198 | }, |
| 199 | }) |
| 200 | defer scheduler.Shutdown() |
| 201 | |
| 202 | // 创建步骤任务 |
| 203 | _, err := scheduler.EverySteps(2, func(ctx context.Context, stepCount int) error { |
| 204 | return nil |
| 205 | }) |
| 206 | if err != nil { |
| 207 | log.Fatalf("创建步骤任务失败: %v", err) |
| 208 | } |
| 209 | |
| 210 | // 创建定时任务 |
| 211 | _, err = scheduler.EveryInterval(200*time.Millisecond, func(ctx context.Context) error { |
| 212 | return nil |
| 213 | }) |
| 214 | if err != nil { |
| 215 | log.Fatalf("创建定时任务失败: %v", err) |
| 216 | } |
| 217 | |
| 218 | // 模拟执行 |
| 219 | for i := 1; i <= 6; i++ { |
| 220 | scheduler.NotifyStep(i) |
| 221 | time.Sleep(150 * time.Millisecond) |
| 222 | } |
| 223 | |
| 224 | time.Sleep(300 * time.Millisecond) |
| 225 | |
| 226 | fmt.Printf("\n总触发次数: %d\n", triggerCount) |
| 227 | fmt.Println() |
| 228 | } |
no test coverage detected