feat: add generic queue and subscription retirement

This commit is contained in:
2026-09-27 14:39:49 +08:00
parent d54bdd9847
commit c9e877c3f7
53 changed files with 1013 additions and 88 deletions

32
sdk/go/retirement.go Normal file
View File

@@ -0,0 +1,32 @@
package orbit
import (
"context"
"errors"
)
// RetireResourceRequest 永久退役已结清的资源;保留原键/版本用于未知回执重报。
type RetireResourceRequest struct {
ExpectedRevision uint64 `json:"expected_revision,string"` // ExpectedRevision 当前配置版本。
Reason string `json:"reason"` // Reason 管理原因,写入服务端审计。
}
// RetireQueue 拒绝新工作并保留历史;未结清资源返回 RESOURCE_BUSY。
func (c *Client) RetireQueue(ctx context.Context, id, key string, in RetireResourceRequest) (CreateQueueResult, error) {
var out CreateQueueResult
if !validID(id) {
return out, errors.New("invalid queue id")
}
err := c.call(ctx, "POST", "/v1/queues/"+id+":retire", key, in, &out)
return out, err
}
// RetireSubscription 只在结果全部确认后退役,释放活动名额;不可重新启用。
func (c *Client) RetireSubscription(ctx context.Context, id, key string, in RetireResourceRequest) (SubscriptionResult, error) {
var out SubscriptionResult
if !validID(id) {
return out, errors.New("invalid subscription id")
}
err := c.call(ctx, "POST", "/v1/subscriptions/"+id+":retire", key, in, &out)
return out, err
}