Closed pedrofgd closed 1 year ago
Antes de processar a requisição(processo 2) não teria que obter a configuração com Configurações ? se for seguir o Princípio da Responsabilidade Única, no meu entendimento o "validador" seria um componente separado que faz comunicação com outros componentes.
A ideia que tive no passo 2 é de só resumir o que acontece. O processamento em detalhes está em #3 , para não ficar muito extenso. Esse diagrama seria focado na validação.
O Validador ficará no ApiBroker (aplicação .NET Core). O diagrama a seguir não foi alterado comparado a última versão. Copiando só para destacar.
sequenceDiagram
participant Cliente
participant Broker
participant Validador
participant Provedor
autonumber
Cliente->>Broker: Requisição para um recurso
Broker->>Broker: Processa a requisição
Broker->>Provedor: Envia a requisição para o provedor
Provedor->>Broker: Resposta
Broker->>Validador: Validar resposta
alt Provedor não retornou todos os campos obrigatórios configurados no recurso
Validador->>Broker: Não atendeu aos critérios
else Contagem de erros do provedor atingiu o limite
Validador->>Broker: Não atendeu aos critérios
else Tempo de resposta foi acima do ideal e atingiu a contagem de tempo excedido
Validador->>Broker: Não atendeu aos critérios
end
opt Os critérios foram atendidos
Validador->>Broker: Atendeu aos critérios
end
A validação de tempo de resposta talvez não caiba aqui... podemos colocar um timeout no HttpClient (componente Requisitor). O validador seria responsável por determinar se o Broker deve chamar o próximo provedor da lista ou não (se a validação falhar, o próximo será chamado). A latência não parece um atributo importante o suficiente para chamar outro provedor, mas é importante para considerar no ranqueamento, que é outro componente. Avaliar remover o ponto 8
O que acham @ClaudioSiqueira @lucas-ye @An-225 ?
concordo com a ideia de se a validação falhar, o próximo será chamado.
" A latência não parece um atributo importante o suficiente para chamar outro provedor, mas é importante para considerar no ranqueamento, que é outro componente. " significa que mesmo está tendo latência, o broker vai aceitar a resposta, mas essa latência vai ser refletido na proxima requisição(quando o broker pega uma lista mais atualizado gerado pelo ranqueador)? entendi certo?
Sim, é isso. Poderá recusar caso exceda o tempo de timeout (exemplo 5 segundos), mas não temos isso implementado por enquanto, nem está no diagrama. Mas pode ser interessante incluir.
Retirei o "Cliente" desse diagrama para ficar mais compacto:
%%{init: {'theme': 'neutral'}}%%
sequenceDiagram
participant Provedor
participant Broker
participant Validador
autonumber
Provedor->>Broker: Resposta de uma requisição
Broker->>Validador: Validar resposta
alt Os critérios foram atendidos
Validador->>Broker: Atendeu aos critérios
end
alt Provedor não retornou todos os campos obrigatórios configurados no recurso
Validador->>Broker: Não atendeu aos critérios
else Contagem de erros do provedor atingiu o limite
Validador->>Broker: Não atendeu aos critérios
else Tempo de resposta foi acima do ideal e atingiu a contagem de tempo excedido
Validador->>Broker: Não atendeu aos critérios
end
Como já apresentamos para a professora ontem, vou fechar essa issue. As atualizações necessárias serão feitas em outras
Critérios que pensamos em considerar:
Diagrama:
Pendente de definir onde o "Validador" vai ficar.