Skip to content

[java][kafka][rabbitmq][webhook] Projeto responsável em distribuir eventos via stream platform e webhook

Notifications You must be signed in to change notification settings

gbzarelli/events-distribution-platform

Repository files navigation

Distribuição de eventos com Kafka e Webhook

O projeto events-distribution-platform tem como intuito validar uma arquitetura que seja capaz de distribuir eventos utilizando o Kafka como plataforma de Streamming e notificar clientes via Webhooks.

Os webhooks serão cadastrados em uma base NoSQL baseado em filtros de tipo de eventos, assim cada usuário (associado a uma organização) poderia ter diferentes tipos de filtros para notificar diferentes endereços.

Arquitetura

Tecnologias

  • Quarkus - Framework para construção das aplicações
  • MongoDB - Armazenamento de regras para os filtros do Webhook
  • K6 - Ferramenta de testes para realizar a chamada na api de carga de eventos.
  • Kafka - Plataforma de Streamming para distribuição de eventos.
  • RabbitMQ - Sistema de mensageria para entrega dos eventos na arquitetura do Webhook
  • Prometheus - Coletor de métricas das aplicações
  • Grafana - Visualizador das métriocas em forma de dashboards

Execução

O arquivo docker-compose.yml conta com uma infra toda configurada e customizada com filtro de eventos com o kafka-stream um consumidor para o tópico filtrado e um para o tópico geral. Para a arquitetura de Webhook, ao subir a infra do MongoDB já é inicializado pré filtros para realizar a chamada de callback nos três rest-clients configurados.

Foi criado um arquivo Makefile para auxiliar no processo de execução de todo ambiente.

Executando o build

>$ make build

Construindo imagens docker

>$ make install

Subindo a stack

>$ make run

Executando carga de eventos:

>$ make send_events

Monitoramento

Temos como monitoramento o Grafana em conjunto com o Prometheus escutando as métricas das aplicações, foi criado uma dashbord default que sobe automaticamente no Grafana ao executar o make run (stack do docker-compose).

Endereços expostos para monitoramento:

About

[java][kafka][rabbitmq][webhook] Projeto responsável em distribuir eventos via stream platform e webhook

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published