Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

331
Visualizações
Las colas fifo de SQS no garantizan una entrega única cuando se usan como disparadores lambda

Tengo una cola fifo para la que actúa desencadenando una lambda y no hay otros consumidores para esta cola fifo.

Quiero que mi lambda no reciba ningún duplicado, para eso me aseguro de que mis mensajes tengan un ID único y que la deduplicación basada en contenido esté habilitada para que no haya duplicados. Pero como dice la documentación.

Las colas FIFO de Amazon SQS garantizan que el orden de procesamiento siga el orden de los mensajes dentro de un grupo de mensajes. Sin embargo, no garantiza una sola entrega cuando se usa como disparador de Lambda. Si la entrega solo una vez es importante en su aplicación sin servidor, se recomienda hacer que su función sea idempotente. Puede lograr esto rastreando un atributo único del mensaje utilizando una base de datos de control escalable y de baja latencia como Amazon DynamoDB.

¿Significa esto que recibiré duplicados en mi lambda donde es el único consumidor de la cola fifo aunque la deduplicación esté habilitada?

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

Hay dos cosas en juego aquí que pareces estar mezclando.

  • Por un lado, está el modelo de entrega de SQS . Con las colas SQS FIFO, notó correctamente que permite la entrega exactamente una vez .

  • Por otro lado, está el modelo de ejecución de funciones Lambda . El modelo de ejecución es al menos una vez . Esto es independiente de cualquier configuración de concurrencia, por cierto.

Hay varias razones por las que Lambda puede ejecutar una función más de una vez. En particular, e independientemente de las colas FIFO de SQS, Lambda tiene un reintento integrado. Según el tipo de error que pueda ocurrir y el tipo de efectos secundarios observables externamente que tenga su código Lambda, es posible que vea que su código se ejecuta más de una vez para una única invocación real.

Dicho esto, todavía hay otras razones por las que un mensaje enviado a una cola SQS FIFO puede terminar siendo procesado por Lambda más de una vez. Por ejemplo, si su función de Lambda tarda más que la configuración VisibilityTimeout de la cola o el mensaje en terminar de procesar todo el lote que recibió, entonces todos esos mensajes volverán a estar visibles en la cola y otra invocación de su función de Lambda ( ciertamente, no solo "probablemente") reciba esos mensajes nuevamente.

Entonces, la conclusión es: debe escribir código idempotente en Lambda, no debido a SQS FIFO (permite correctamente la prevención de entregas duplicadas), sino debido a los reintentos de Lambda y la posibilidad de que los mensajes vuelvan a ser visibles en la cola. debido al procesamiento lento (siempre es un modelo de ejecución al menos una vez ).

over 4 years ago · Santiago Trujillo Relatório

0

Incluso si tiene una sola función lambda como consumidor, depende de la configuración de simultaneidad en su función lambda, puede haber múltiples invocaciones. Lo que significa que, en un momento dado, varias invocaciones pueden seleccionar mensajes en su cola de SQS.

Una solución simple para esto es establecer la simultaneidad de la función lambda en 1, de modo que en un momento dado, solo se permita una invocación. Entonces, los mensajes en la cola se procesarán en orden.

(Sin embargo, esto conducirá a un cuello de botella si tiene una gran cantidad de mensajes en la cola para procesar).

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda