Este projeto implementa uma solução em Go que utiliza multithreading para buscar informações de CEP em duas APIs diferentes simultaneamente, retornando o resultado da API mais rápida.
- BrasilAPI: https://brasilapi.com.br/api/cep/v1/{cep}
- ViaCEP: http://viacep.com.br/ws/{cep}/json/
- ⚡ Realizar requisições simultâneas para ambas as APIs
- 🏃 Aceitar a resposta da API mais rápida e descartar a mais lenta
- 📝 Exibir os dados do endereço e qual API retornou a resposta
- ⏱️ Limitar o tempo de resposta em 1 segundo, exibindo erro de timeout caso necessário
- 🦫 Go (Golang)
- 🔄 Goroutines para concorrência
- 📨 Channels para comunicação entre goroutines
- ⏰ Context para controle de timeout
- 🌍 HTTP client para requisições
-
✅ Certifique-se de ter o Go instalado em sua máquina (versão 1.21 ou superior)
-
📥 Clone este repositório:
git clone https://github.com/hmiranda99/multithreading.git
cd multithreading▶️ Execute o programa passando um CEP como argumento:
go run main.go 01153000O CEP deve conter 8 dígitos numéricos.
# Executando com um CEP válido
go run main.go 01153000
# Saída esperada (exemplo):
Resposta mais rápida da API ViaCEP:
CEP: 01153-000
Logradouro: Rua Vitorino Carmilo
Complemento:
Bairro: Barra Funda
Cidade: São Paulo
UF: SP- 📄
main.go: Contém a implementação principal do programa - 📦
go.mod: Arquivo de gerenciamento de dependências do Go
- 📥 O programa recebe um CEP como argumento da linha de comando
- 🔄 Inicia duas goroutines simultaneamente para fazer requisições às APIs
- 📨 Utiliza channels para receber as respostas
- ⏰ Implementa um timeout de 1 segundo usando context
- 📝 Exibe a resposta da API mais rápida ou uma mensagem de erro em caso de timeout
O programa trata os seguintes casos:
- ❌ CEP não fornecido
- ❌ CEP com formato inválido
- ⏰ Timeout das requisições
- 🔌 Erros de conexão
- 📝 Erros de parsing do JSON