【问题标题】:Amazon Simple Queue Service (SQS)亚马逊简单队列服务 (SQS)
【发布时间】:2011-07-15 08:14:54
【问题描述】:

我在 SQS 中创建了一个队列,添加了两条消息(序列化的 PHP 数组:array('filename' => 0, ...)array('filename' => 1, ...))。我正在使用来自他们的 git repo 的最新版本的 amazon SDK for PHP。

问题是当我使用带有这些选项的 receive_message 函数时:

MaxNumberOfMessages = 10
VisibilityTimeout = 0 // other values doesn't change much

我只收到第一条消息,重复了 10 次:

<ReceiveMessageResponse>
−
<ReceiveMessageResult>
−
<Message>
<MessageId>82523332-75e0-444d-ae8f-55ccd5580beb</MessageId>
−
<ReceiptHandle>
v5iiyMGi3b6RunVNVvjOQOV+ZDqRV7sNLzj5pUAEj1brIAkucpYiGaM8UIdOEis9Kouh4s+cAkSAd7MhbJKPGM6SdKYE993x2Lf/DwEbhkfmzRxOevzUsyJCrrVdTSTSx0cNUqqV6Cgr/Asi72t/UOhbdXhTp3kaCaZfd2weymg=
</ReceiptHandle>
<MD5OfBody>ced185420292fbd06b32ea6e35da3d21</MD5OfBody>
−
<Body>
a:3:{s:8:"priority";i:2;s:8:"filename";i:0;s:11:"task_ticket";s:0:"";}
</Body>
</Message>
−
<Message>
<MessageId>82523332-75e0-444d-ae8f-55ccd5580beb</MessageId>
−
<ReceiptHandle>
v5iiyMGi3b6RunVNVvjOQOV+ZDqRV7sNLzj5pUAEj1brIAkucpYiGaM8UIdOEis9Kouh4s+cAkSAd7MhbJKPGM6SdKYE993x2Lf/DwEbhkfmzRxOevzUsyJCrrVdTSTSx0cNUqqV6Cgr/Asi72t/UOhbdXhTp3kaCaZfd2weymg=
</ReceiptHandle>
<MD5OfBody>ced185420292fbd06b32ea6e35da3d21</MD5OfBody>
−
<Body>
a:3:{s:8:"priority";i:2;s:8:"filename";i:0;s:11:"task_ticket";s:0:"";}
</Body>
</Message>
    ...and so on, always with "filename";i:0

我 100% 认为队列中只有 2 条消息(我删除了它并重新创建以确保),但我只得到第一个,填充了很多次。这会不时发生变化,有时我会在列表中混合第二个。如果我将 VisibilityTimeout 保留为默认值 3(或其他非零值),第一个会消失一段时间(如预期的那样),然后我会得到第二个重复多次。

get_queue_size 返回 2,这是真的。

我还尝试了 Amazon Scratchpad,只是进行了 API 调用,结果相同。那么,是 SQS 坏了还是我做错了什么?

【问题讨论】:

  • 没有看到代码很难帮助。

标签: php sdk amazon-web-services amazon-sqs


【解决方案1】:

我相信这是预期的行为,因为您设置了VisibilityTimeout = 0。通常,您会将超时值设置为处理消息的预期持续时间。您必须在可见性超时到期之前对已读消息调用delete,否则该消息将自动重新排队。

在更复杂的系统中,如果初始超时时间不够长,可能会使用单独的线程来延长单个消息的超时时间。

听起来您才刚刚开始,因此编写消息处理代码以考虑多次读取同一消息非常重要。您的消息不仅可以自动重新排队,而且 SQS 有时会返回重复的消息。

【讨论】:

    猜你喜欢
    • 2015-05-12
    • 2010-11-03
    • 2017-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多