Files
quyun-v2/backend/app/jobs/args/media_asset_process.go

39 lines
1.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package args
import (
"quyun/v2/providers/job"
. "github.com/riverqueue/river"
"go.ipao.vip/atom/contracts"
)
var _ contracts.JobArgs = MediaAssetProcessJob{}
// MediaAssetProcessJob 表示“媒体资源处理”的一次性异步任务。
//
// 设计说明:
// - 该任务用于将 media_assets 从 processing 推进到 ready/failed由 worker 执行核心处理逻辑)。
// - 幂等由 River Unique + 业务侧 DB 状态机共同保证(重复入队会被跳过或无副作用)。
type MediaAssetProcessJob struct {
// TenantID 租户ID用于多租户隔离与唯一性维度
TenantID int64 `json:"tenant_id" river:"unique"`
// AssetID 媒体资源ID用于唯一性维度
AssetID int64 `json:"asset_id" river:"unique"`
}
func (MediaAssetProcessJob) Kind() string { return "media_asset_process" }
func (a MediaAssetProcessJob) UniqueID() string { return a.Kind() }
func (MediaAssetProcessJob) InsertOpts() InsertOpts {
return InsertOpts{
Queue: job.QueueDefault,
Priority: job.PriorityDefault,
// 失败可重试;由 worker 判断不可重试的场景并 JobCancel。
MaxAttempts: 10,
UniqueOpts: UniqueOpts{
ByArgs: true,
},
}
}