feat: serialize keyed tasks across queues with durable fencing tokens
This commit is contained in:
@@ -9,6 +9,8 @@ import (
|
||||
// Attempt 表示一次任务执行尝试,保存租约、授权代次与独立结果。
|
||||
// 对应表 pulse_attempts;这是服务端持久化模型,不直接作为 API 响应。
|
||||
type Attempt struct {
|
||||
// ConcurrencyToken 资源键的单调许可序号;零表示未启用,重连保留,新尝试递增。
|
||||
ConcurrencyToken uint64 `db:"concurrency_token"`
|
||||
// Record 包含命名空间、记录标识、并发版本和 UTC 时间。
|
||||
core.Record
|
||||
// TaskID 关联的 Pulse 任务标识。
|
||||
|
||||
@@ -35,6 +35,10 @@ type Task struct {
|
||||
RecoverySafety RecoverySafety `db:"recovery_safety"`
|
||||
// BusinessKey 业务侧关联键,用于检索追踪,不自动提供业务幂等;可为空,表示尚未设置该关联或值。
|
||||
BusinessKey *string `db:"business_key"`
|
||||
// ConcurrencyKey 显式互斥资源键,命名空间内跨队列共享;空表示不启用。
|
||||
ConcurrencyKey *string `db:"concurrency_key"`
|
||||
// ConcurrencyKeyDigest 资源键精确 UTF-8 字节的域分隔摘要,与键同时为空或非空。
|
||||
ConcurrencyKeyDigest *core.Digest `db:"concurrency_key_digest"`
|
||||
// OwnerKind 来源资源类型,例如流程激活;为空表示无来源关联。
|
||||
OwnerKind *string `db:"owner_kind"`
|
||||
// OwnerID 来源资源标识,必须与来源类型同时有值或同时为空。
|
||||
|
||||
@@ -9,6 +9,8 @@ import (
|
||||
// WorkerSession 表示一次 Worker 连接的持久化身份与能力快照。
|
||||
// 对应表 pulse_worker_sessions;这是服务端持久化模型,不直接作为 API 响应。
|
||||
type WorkerSession struct {
|
||||
// ConcurrencyKeys 是否明确支持互斥资源键与序号交付,旧 Worker 默认为假。
|
||||
ConcurrencyKeys bool `db:"concurrency_keys"`
|
||||
// Record 包含命名空间、记录标识、并发版本和 UTC 时间。
|
||||
core.Record
|
||||
// WorkerInstanceID Worker 进程实例标识,重连保留,进程重启应更换。
|
||||
|
||||
Reference in New Issue
Block a user