gosqs: персистить перенос в DLQ (SaveMessage в DLQ + DeleteMessagePersist исходной)

This commit is contained in:
2026-10-11 08:34:01 +03:00
parent e720f1ffcb
commit dd9acb3705
5 changed files with 41 additions and 9 deletions
+9 -2
View File
@@ -18,8 +18,15 @@ func tenantQueueKey(tenantAccessKey, queueName string) string {
return tenantAccessKey + ":" + queueName
}
// getTenantFromContext — извлекает тенанта из request context.
// Возвращает nil если тенант не найден (не должно быть — auth middleware должен это поймать раньше).
// dlqKeyFor — ключ DLQ по ключу исходной очереди (формат "{accessKey}:{name}")
// и имени DLQ. Используется для персиста перенесённых в DLQ сообщений.
func dlqKeyFor(srcKey, dlqName string) string {
idx := strings.LastIndex(srcKey, ":")
if idx < 0 {
return srcKey + ":" + dlqName
}
return srcKey[:idx] + ":" + dlqName
}
func getTenantFromContext(r *http.Request) *tenant.Tenant {
t, _ := r.Context().Value(auth.TenantContextKey).(*tenant.Tenant)
return t