Skip to content

Implementar um sistema de Filas para o Simulado usando Mutex #80

Description

@cleytonbiffe

Image

Objetivo:
Implementar o Amazon SQS no processo de processamento de simulados. Quando o cliente enviar para a API VNF um simulado, a API VNF deverá:

  1. Publicar a mensagem na fila do Amazon SQS.
  2. Disparar um evento HTTP para o MS Simulado, informando-o que há um novo simulado para processamento.

Requisitos:

  • A API VNF não precisa esperar uma resposta do MS Simulado, apenas deve informar ao cliente que o simulado está sendo processado.
  • O cliente deverá receber uma resposta informando que o processo foi recebido e está em andamento.
  • O frontend deve atualizar o status do simulado para "Processando" no histórico, assim que o envio for confirmado.

MS Simulado:

  • Ao receber o evento da API VNF, o MS Simulado deve processar as mensagens da fila do Amazon SQS.
  • A função de processamento no MS Simulado deve:
    • Ler até 10 mensagens por vez da fila (ajustável).
    • Implementar um sistema de retry (3 tentativas) para mensagens que falharem durante o processamento.
    • Usar long polling para verificar mensagens na fila a cada X segundos.

Exemplo simples de testes realizado

Image

Notas para o desenvolvedor:

  • O uso do isProcessing serve para garantir que apenas um processo de simulado seja executado por vez.
  • O retry deve ser implementado de forma que falhas temporárias não interrompam o processamento geral.
  • Utilize AWS SDK (instalar) para integração com o SQS e long polling para reduzir o custo de polling ativo.

Referências:
https://en.wikipedia.org/wiki/Mutual_exclusion
https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/Welcome.html
https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-short-and-long-polling.html

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions