Comportamento do AWS SQS com vários conjuntos de gatilhos do Lambda

2

Eu tenho uma fila SQS configurada com vários Lambdas configurados como gatilhos. Embora isso seja permitido pela API da AWS, não está claro qual é o comportamento pretendido.

Por exemplo, uma mensagem é enviada da fila e enviada para cada Lambda? Ou, em vez disso, cada Lambda age como um serviço de pesquisa que extrai as mensagens da fila separadamente?

Do meu teste parece ser o último, mas não posso, para a vida de mim, encontrar isso documentado em qualquer lugar. Este último também não faz muito sentido para mim dada a funcionalidade de concorrência do AWS Lambda.

    
por Mandatory Programmer 16.10.2018 / 00:00

1 resposta

3

A mensagem do SQS só pode ser lida uma vez da fila e, embora esteja sendo processada por um consumidor, ela ficará invisível para outros consumidores. Se você tiver vários lambdas, cada um receberá sua parte das mensagens, mas uma mensagem não será entregue a mais de um lambda por vez.

Mensagens do SQS podem ser reinseridas na fila se o Lambda de processamento falhar (se o Lambda for acionado pela fila) ou se a mensagem não for excluída no tempo limite de visibilidade (se o Lambda estiver pesquisando a fila).

Se você precisar de uma única mensagem processada por vários Lambdas ao mesmo tempo, você pode:

  1. divulgue a mensagem do SQS para o SNS que terá vários inscritos (por exemplo, vários Lambdas, todos processando a mesma mensagem) ou
  2. use stream do Kinesis em vez de SQS. O Kinesis suporta múltiplos consumidores da mesma mensagem.

Espero que ajude:)

    
por 16.10.2018 / 00:17