Я создал очередь в SQS, добавил два сообщения (сериализованные массивы PHP: array('filename' => 0, ...)
и array('filename' => 1, ...)
). Я использую новейшую версию amazon SDK для PHP из их репозитория git.
Проблема в том, что когда я использую функцию 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 не работает или я что-то не так делаю?