24 lines
1.9 KiB
Go
24 lines
1.9 KiB
Go
package outbox
|
||
|
||
import "time"
|
||
|
||
// Record 是业务数据库中的待发命令;只确认平台受理,不能表示业务执行成功。
|
||
type Record struct {
|
||
NamespaceID string // NamespaceID 固定目标命名空间,换凭据不能改变归属。
|
||
QueueID string // QueueID 固定目标队列,发送前通过当前凭据核对归属。
|
||
OperationID string // OperationID 调用方持久化的业务操作ID,同命名空间内唯一。
|
||
IdempotencyKey string // IdempotencyKey 由操作ID派生的固定提交键,重报禁止换键。
|
||
RequestJSON []byte // RequestJSON 冻结的任务提交正文,保留数字精度,不含凭据。
|
||
RequestDigest []byte // RequestDigest 冻结正文的SHA256,发送前重新校验,非平台语义摘要。
|
||
State string // State PENDING待发、SENDING领取中、ACCEPTED已受理、REVIEW需核查。
|
||
SendCount uint32 // SendCount 持久化领取次数,包含领取后未发HTTP即退出的次数,上限100。
|
||
LeaseEpoch uint64 // LeaseEpoch 每次领取递增;旧代次不能更新新代次的本地结果。
|
||
WakeAt *time.Time // WakeAt PENDING的下次领取时间或SENDING的租约期限;终结状态为空,UTC微秒。
|
||
SendDeadlineAt time.Time // SendDeadlineAt 首次入库后24小时停止新发送,短于平台90天幂等窗口。
|
||
LastCode string // LastCode 最近一次稳定分类,不保存HTTP错误正文、凭据或业务秘密。
|
||
TaskID *string // TaskID 仅ACCEPTED记录平台任务ID,其余状态为空。
|
||
ReceiptJSON []byte // ReceiptJSON 仅ACCEPTED保存原受理回执;不是当前执行状态。
|
||
CreatedAt time.Time // CreatedAt 业务事务首次提交命令的UTC时间,微秒精度。
|
||
UpdatedAt time.Time // UpdatedAt 最近状态变化的UTC时间,不能替代租约代次。
|
||
}
|