I.IProject, ICreateProjectProjectAssociation, RiseProjectPayloadCreateProject, UpdateStatusI.CreateProjectService para a interface ICreateProject.Utilizamos o decorator @EventPattern('events') para escutar eventos que chegam no tópico events do Kafka. Como o Kafka não faz filtragem nativa de mensagens por tipo de evento, a filtragem deve ser feita dentro da lógica do consumidor, utilizando if ou outro mecanismo de validação interno para separar os tipos de evento.
Exemplo:
Example :@EventPattern('events')
handleEvent(@Payload() message) {
// Lógica para lidar com o evento
// A variável message que chega no parâmetro do método ja esta serializada caso seja um objeto JSON valido, caso contrario assume o tipo string
if (message.type === 'ProjectCreated') {
// Manipula evento de criação de projeto
} else if (message.type === 'StatusUpdated') {
// Manipula evento de atualização de status
}
}Implementamos a autorização de rotas validando tokens do Keycloak localmente. Os tokens são decodificados e verificados utilizando a chave pública do Keycloak, evitando chamadas constantes ao servidor Keycloak.
Endpoints de monitoramento de saúde, como /api/health, estão localizados na camada de infraestrutura, mas a lógica do controlador pode residir na camada de apresentação. Esse endpoint fornece feedback em tempo real sobre componentes do sistema (ex.: Kafka, banco de dados).
*/test de mesmo nível do código.jest.spyOn para testar se métodos foram chamados e para verificar as saídas.A pasta config contém todas as configurações relacionadas ao ambiente, incluindo strings de conexão, chaves de API e tópicos do Kafka. As variáveis de ambiente são gerenciadas usando o EnvService, garantindo fácil acesso e gerenciamento das configurações externas.
Seguindo este guia, os desenvolvedores manterão padrões de código consistentes, resultando em uma base de código escalável e de fácil manutenção. Este guideline evoluirá conforme o projeto cresce, mas seus princípios principais asseguram uma arquitetura limpa e boas práticas sólidas.