【发布时间】:2022-07-22 17:08:59
【问题描述】:
我有一个简单的 Golang 应用程序,它循环并接收来自 SQS 队列的消息。如果我向队列发送四条消息并调用 ReceiveMessage() 并将 MaxNumberOfMessages 设置为 1,则循环运行四次并接收四条消息。
由于某种原因,如果我将 MaxNumberOfMessages 更改为 10,我会在每个响应中收到 10 条消息(原来 4 条的重复都混在一起了),并且循环永远不会停止。 API 似乎永远向我发送 4 条消息。即使我正在删除它们,但每个实例的 ReceiptHandle 都是不同的。
为什么会这样?
// This loops seemingly forever and returns 10 messages (all duplicates) every time...
for {
m, err := service.ReceiveMessage(&sqs.ReceiptMessageInput{
MaxNumberOfMessages: aws.Int64(10),
QueueUrl: &queueUrl,
WaitTimeSeconds: aws.Int64(20),
})
for i := 0; i < len(m.Messages); i++ {
service.DeleteMessage(&sqs.DeleteMessageInput{
QueueUrl: &queueUrl,
ReceiptHandle: m.Messages[i].ReceiptHandle,
})
}
}
【问题讨论】:
-
消息可见性超时设置是多少?
标签: go amazon-sqs