fix(fifo): ContentBasedDeduplication + dedup window survives delete (AWS semantics)
- ContentBasedDeduplication=true: dedupId computed from body SHA-256 when not provided - do NOT drop dedupId on message delete: AWS keeps the 5-minute window regardless (previously re-send after delete delivered the message again) - utils: GetSHA256Hash
This commit is contained in:
@@ -92,6 +92,7 @@ func SendMessageV1(req *http.Request) (int, interfaces.AbstractResponseBody) {
|
||||
maxMessageSize := queue.MaximumMessageSize
|
||||
currentMsgCount := queue.LiveCount()
|
||||
queueIsFIFO := queue.IsFIFO
|
||||
contentBasedDedup := queue.ContentBasedDeduplication
|
||||
delaySecs := queue.DelaySeconds
|
||||
|
||||
// FIFO-очередь БЕЗ MessageGroupId — ошибка: AWS требует GroupId для каждой
|
||||
@@ -100,6 +101,12 @@ func SendMessageV1(req *http.Request) (int, interfaces.AbstractResponseBody) {
|
||||
if queueIsFIFO && messageGroupID == "" {
|
||||
return utils.CreateErrorResponseV1("MissingParameter", true)
|
||||
}
|
||||
// ContentBasedDeduplication: если MessageDeduplicationId не передан, AWS сам
|
||||
// вычисляет его из тела сообщения (SHA-256). Без этого включённый флаг
|
||||
// ничего не делал бы и FIFO-дедупликация не работала.
|
||||
if queueIsFIFO && contentBasedDedup && messageDeduplicationID == "" {
|
||||
messageDeduplicationID = utils.GetSHA256Hash(messageBody)
|
||||
}
|
||||
|
||||
if maxMessageSize > 0 && len(messageBody) > maxMessageSize {
|
||||
return utils.CreateErrorResponseV1("MessageTooBig", true)
|
||||
|
||||
Reference in New Issue
Block a user