feat: add bounded task priority and fair application dispatch
This commit is contained in:
@@ -55,6 +55,9 @@ func NormalizeSubmit(in SubmitInput) (SubmitInput, error) {
|
||||
if err := ValidateConcurrencyKey(in.ConcurrencyKey); err != nil {
|
||||
return in, err
|
||||
}
|
||||
if in.Priority < 0 || in.Priority > 9 {
|
||||
return in, fault.Invalid("priority must be between 0 and 9")
|
||||
}
|
||||
if in.TaskTimeoutMS == 0 {
|
||||
in.TaskTimeoutMS = 24 * 60 * 60 * 1000
|
||||
}
|
||||
|
||||
@@ -27,6 +27,8 @@ type SubmitInput struct {
|
||||
BusinessKey string `json:"business_key,omitempty"`
|
||||
// ConcurrencyKey 显式互斥资源键,同命名空间跨队列最多一个有效尝试;不代替业务幂等。
|
||||
ConcurrencyKey string `json:"concurrency_key,omitempty"`
|
||||
// Priority 冻结优先级,0至9,每级30秒排序优势,不改变最早执行时间。
|
||||
Priority int16 `json:"priority,omitempty"`
|
||||
// AvailableAt 最早执行时间;为空表示受理后即可进入派发范围。
|
||||
AvailableAt *time.Time `json:"available_at,omitempty"`
|
||||
// StartDeadlineAt 最晚开始时间;为空表示使用任务总截止时间。
|
||||
@@ -67,6 +69,8 @@ type TaskView struct {
|
||||
BusinessKey string `json:"business_key,omitempty"`
|
||||
// ConcurrencyKey 显式互斥资源键,同命名空间跨队列最多一个有效尝试;不代替业务幂等。
|
||||
ConcurrencyKey string `json:"concurrency_key,omitempty"`
|
||||
// Priority 冻结优先级,0至9,每级30秒排序优势,不改变最早执行时间。
|
||||
Priority int16 `json:"priority,omitempty"`
|
||||
// AvailableAt 最早可执行时间,UTC。
|
||||
AvailableAt time.Time `json:"available_at"`
|
||||
// StartDeadlineAt 最晚开始时间;为空时使用任务总截止时间。
|
||||
@@ -137,6 +141,8 @@ type TaskSummary struct {
|
||||
BusinessKey string `json:"business_key,omitempty"`
|
||||
// ConcurrencyKey 显式互斥资源键,同命名空间跨队列最多一个有效尝试;不代替业务幂等。
|
||||
ConcurrencyKey string `json:"concurrency_key,omitempty"`
|
||||
// Priority 冻结优先级,0至9,每级30秒排序优势,不改变最早执行时间。
|
||||
Priority int16 `json:"priority,omitempty"`
|
||||
// AvailableAt 最早可执行时间,UTC。
|
||||
AvailableAt time.Time `json:"available_at"`
|
||||
// DeadlineAt 任务总截止时间,UTC。
|
||||
|
||||
Reference in New Issue
Block a user