v1.1.3

pardnchiu/go-queue

最後更新

Note此 README 由 SKILL 生成,英文版請參閱 這裡。



PRIORITY TASKS THAT NEVER STARVE!


Go ReferenceReleaseLicenseCoverage




Go 任務佇列,具備優先佇列排程、有界 worker pool 與防飢餓自動升級

目錄



功能特點


go get github.com/pardnchiu/go-queue · 完整文件

  • 五級優先權最小堆 — Immediate/High/Retry/Normal/Low 五個層級共用一個最小堆,同級依入列時間先進先出。
  • 防飢餓自動升級 — Low 與 Normal 任務等待超過門檻後自動升級,高優先權流量再密集也不會讓低優先權任務永遠排不到。
  • Preset 驅動的逾時 — 以具名 Preset 綁定優先權與基準逾時,實際逾時依優先權縮放並限制在 15–120 秒之間。
  • 重試與 panic 隔離 — 失敗任務以專屬 Retry 優先權重新入列,任務內的 panic 被轉為錯誤,不會拖垮 Worker 池(Pool)。
  • 原子狀態生命週期 — Created → Running → Closed 由 CAS 驅動,Shutdown 會排空剩餘任務並支援期限控制。

架構


完整架構

graph TB
    C[呼叫端] -->|Enqueue| P[Pending 佇列]
    P --> H[優先權最小堆]
    H -->|Pop + 升級| W[Worker 池]
    W --> E[執行 + 逾時 + panic 恢復]
    E -->|失敗且可重試| P
    E -->|成功| CB[Callback]
    E --> L[slog 事件]
    S[原子狀態] -.-> P
  1. graph TB
  2. C[呼叫端] -->|Enqueue| P[Pending 佇列]
  3. P --> H[優先權最小堆]
  4. H -->|Pop + 升級| W[Worker 池]
  5. W --> E[執行 + 逾時 + panic 恢復]
  6. E -->|失敗且可重試| P
  7. E -->|成功| CB[Callback]
  8. E --> L[slog 事件]
  9. S[原子狀態] -.-> P

授權


本專案採用 MIT LICENSE。

Author


Just open an issue to share an idea.
go-queue contributors


©️ 2025 邱敬幃 Pardn Chiu
EN