Parte final do tutorial que foi iniciado a partir do repositório twitter-sniffer e da postagem Apache Camel e Twitter: Orquestrando mensagens. O projeto foi totalmente atualizado tanto para casar com a última versão existente das libs quanto para ajeitá-lo de uma maneira geral (inclusão de testes, configs centralizadas, organização de rotas, etc.).
Acesse meu blog e conheça mais os pormenores desse projeto na postagem Telão interativo estilo SPTV com Apache Camel.
Para brincar com o projeto é necessário ter o ActiveMQ rodando. Na primeira postagem que fiz expliquei como configurá-lo para testar o projeto. Para deixar as coisas mais simples, sugiro usar um container via Docker:
docker run --name='activemq' -itd --rm \
-p 8161:8161 -p 61616:61616 -p 61613:61613 \
-e 'ACTIVEMQ_STATIC_QUEUES=Tweets.Trends' webcenter/activemq:latest
A fila Tweets.Trends
é utilizada no fluxo de controle dos tweets.
Para rodar o projeto, execute o comando:
mvn spring-boot:run
E depois acesse o endereço http://localhost:8095/telao-interativo-sptv.html
.
Para construir o JAR rodando apenas os testes unitários execute o comando:
maven clean package
Com teste de integração:
maven clean verify
Para executar o JAR gerado:
java -jar target/telao-interativo-sptv.jar
Se desejar alterar a palavra chave da busca no Twitter, você até pode alterar o arquivo application.yml e construir tudo de novo, mas como estamos com Spring Boot, podemos passar como parâmetro alterando o comportamento. Exemplo:
java -jar -Dcustom.twitter.keywords="#TheWalkingDead" target/telao-interativo-sptv.jar
Além de testes com mocks, o projeto também contempla teste de integração considerando o ActiveMQ. Para testar a classe PrepareTweetsAndEvaluateThemRoutesIT
por exemplo, execute o seguinte na linha de comando na raiz do projeto:
mvn -Dit.test=PrepareTweetsAndEvaluateThemRoutesIT integration-test
É bom lembrar que por ser de integração terá que passar pelos unitários. Uma opção é interpretá-lo como unitário pelo comando abaixo, assim exclusivamente ele será executado:
mvn -Dtest=PrepareTweetsAndEvaluateThemRoutesIT test
No teste é criado um container específico para avaliar a integração com o ActiveMQ e também são gerados os tweets do arquivo CSV que está em src/test/resources
no banco de dados H2.
Expliquei um passo-a-passo no YouTube. Acesse no link abaixo:
Os testes funcionam OK no Linux, menos no Windows. Se você tentou construir pelo Windows talvez tenha pego um erro no teste unitário da classe ReadQueueAndSaveEachMessageRouteTest pois o payload processado não casa com o esperado. O porquê é simples. No Windows ele interpreta quebra de linha com carriage return e line feed enquanto no teste está apenas com line feed. Pra passar, substitua todos \n por \r\n que o teste passa.
Só não faço a correção definitiva pois fica como lição honesta pra quem seguir adiante com esse projeto para algum fim. Nunca é tarde para lembrar que é sempre bom testar no sistema operacional alvo!
Procure por SP1 estreia novo estúdio e telões interativos ou acesse aqui enquanto ainda estiver disponível.