sqs que programa pricing precios precio chile aws php sdk amazon-web-services amazon-sqs

php - programa - sqs que es



Servicio de cola simple de Amazon(SQS) (1)

Creo que este es el comportamiento esperado porque ha establecido VisibilityTimeout = 0 . Normalmente, establecería el valor de tiempo de espera para que sea la duración esperada para procesar un mensaje. Debe llamar a delete en un mensaje de lectura antes de que expire el tiempo de espera de visibilidad o el mensaje se volverá a poner automáticamente en cola.

En sistemas más complejos, se puede usar un hilo separado para extender el período de tiempo de espera para un solo mensaje si el tiempo de espera inicial no fue lo suficientemente largo.

Como parece que recién está comenzando, es importante que escriba su código de procesamiento de mensajes para dar cuenta de que ha leído el mismo mensaje varias veces. No solo su mensaje puede ser reprogramado automáticamente, sino que SQS ocasionalmente devolverá un mensaje duplicado.

Creé una cola en SQS, agregué dos mensajes (matrices PHP serializadas: array (''filename'' => 0, ...) y array (''filename'' => 1, ...)). Estoy usando la versión más reciente de Amazon SDK para PHP desde su git repo.

El problema es que cuando uso la función receive_message con estas opciones: MaxNumberOfMessages = 10 VisibilityTimeout = 0 // otros valores no cambian mucho

Solo recibo el primer mensaje, repetido 10 veces:

<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

Estoy al 100% de que solo hay 2 mensajes en la cola (lo borré y recreé para estar seguro) y, sin embargo, recibí solo el primero, poblado muchas veces. Esto cambia de vez en cuando y a veces obtengo el segundo mezclado en la lista. Si dejo VisibilityTimeout como predeterminado 3 (u otro valor distinto de cero), el primero desaparece por un tiempo (como se esperaba) y luego aparece el segundo repetido muchas veces :)

get_queue_size devuelve 2, que es verdadero.

También probé el scratchpad de Amazon y acabo de hacer llamadas API con los mismos resultados. Entonces, ¿está roto SQS o estoy haciendo algo totalmente incorrecto?

¡Gracias!