diff --git a/app/models/requests.go b/app/models/requests.go index f71e133..a1c4d8e 100644 --- a/app/models/requests.go +++ b/app/models/requests.go @@ -406,6 +406,7 @@ type QueueAttributes struct { // - Query (form Attribute.N.Name) — в app/gosqs/queue_attributes.go; // - JSON — в UnmarshalJSON ниже (стандартный парсер молча отбрасывает // неизвестные поля, поэтому проверка выполняется вручную). +// // Policy/RedriveAllowPolicy — допустимы для совместимости, но не реализованы (no-op). var AttrNameWhitelist = map[string]bool{ "DelaySeconds": true, @@ -416,6 +417,10 @@ var AttrNameWhitelist = map[string]bool{ "VisibilityTimeout": true, "RedrivePolicy": true, "RedriveAllowPolicy": true, + // FIFO-атрибуты: FifoQueue у нас выводится из суффикса .fifo имени очереди, + // но клиенты присылают эти атрибуты в CreateQueue — они допустимы (no-op). + "FifoQueue": true, + "ContentBasedDeduplication": true, } // UnmarshalJSON — строгая разборка QueueAttributes для JSON-протокола. @@ -427,6 +432,7 @@ var AttrNameWhitelist = map[string]bool{ // любой атрибут — «неверное имя атрибута принято» из нагрузочного теста). // 3. Разбираем штатно: все известные поля попадают в структуру, вложенный // RedrivePolicy использует собственный UnmarshalJSON. +// // Ошибка приводит к TransformRequest=false → InvalidParameterValue в handler. func (q *QueueAttributes) UnmarshalJSON(data []byte) error { var raw map[string]json.RawMessage