v1.1.3

Preset

最後更新


本頁說明 PresetConfig、Preset 如何決定任務的優先權與基準逾時,以及未定義的 Preset 名稱會解析成什麼。

PresetConfig


  1. type PresetConfig struct {
  2. Priority Priority
  3. Timeout time.Duration
  4. }

欄位零值說明
PriorityPriorityImmediate使用此 Preset 的任務初始優先權
Timeout0大於 0 時取代 Config.Timeout,作為此 Preset 的基準逾時

map 中不存在的 Preset 名稱(含 "")會解析為零值 PresetConfig{},即 PriorityImmediate 加上全域基準逾時。

設定範例


  1. q := core.New(&core.Config{
  2. Workers: 8,
  3. Size: 1024,
  4. Timeout: 30 * time.Second,
  5. Preset: map[string]core.PresetConfig{
  6. "payment": {Priority: core.PriorityHigh},
  7. "email": {Priority: core.PriorityNormal},
  8. "report": {Priority: core.PriorityLow, Timeout: 60 * time.Second},
  9. },
  10. })

Preset優先權實際逾時升級
paymentHigh30s ÷ 2 = 15s無
emailNormal30s等待 60 秒後升為 High
reportLowmin(60s × 2, 120s) = 120s等待 30 秒後升為 Normal
"" 或未定義Immediatemax(30s ÷ 4, 15s) = 15s無

升級門檻只讀 Config.Timeout,不讀 Preset 的 Timeout。各欄背後的規則:優先權等級、逾時推算、防飢餓自動升級。
EN