Kafka Connect e Kafka Streams Integre suas aplicações ao Kafka usando as melhores práticas
Rodrigo Vieira PintoConteúdo
Kafka vem se mostrando uma solução muito interessante quando o assunto é comunicação assíncrona entre microsserviços. No entanto, a criação de produtores de mensagens pode ser uma tarefa ardilosa. Por vezes, é necessário persistir registros em banco e enviar mensagens a um broker Kafka em uma operação atômica. Há também a dificuldade de integrarmos aplicações legadas, sejam elas produtoras ou consumidoras de mensagens, visto que elas podem ter sido construídas em tecnologias que não suportam a comunicação com o Kafka.
Neste livro, Rodrigo Vieira Pinto traz o Kafka Connect como a solução para os problemas acima. Você vai aprender como integrar diferentes aplicações ao Kafka usando os conectores do Kafka Connect. Também utilizará diversos Single Message Transformations (SMTs) que permitem realizar transformações nas mensagens antes que elas cheguem aos tópicos, fazendo com que os consumidores sejam mais simples de se implementar. Seu aprendizado avançará com exemplos de processamento de mensagens usando o Kafka Streams, que nos oferece um olhar mais próximo de um banco de dados. Tudo isso com garantias de qualidade, por meio da escrita de testes automatizados.
Sumário
O Alura Viagens e Turismo
- 1 Funcionalidades da solução
- 2 Onboarding – ferramentas a serem instaladas
- 3 Kafka Connect: Conceitos básicos
- 3.1 O Kafka Connect
- 3.2 Criando nossa imagem de Kafka Connect
- 3.3 Integração entre o ms-companhias-aereas e o ms-pesquisa
- 3.4 O conector para a base de dados do ms-companhias-aereas
- 3.5 Subindo a infraestrutura da aplicação
- 3.6 A Kafka Connect REST API
- 3.7 Testando a solução
- 3.8 Resumo
Kafka Connect e seus recursos
- 4 Kafka Connect e a resiliência das aplicações
- 4.1 Leitura do banco de dados pelo Kafka Connect
- 4.2 Um cenário mais específico - cancelamento de novos voos com os Tombstones Events
- 4.3 Resumo
- 5 Melhorias nas mensagens postadas e o ms-pesquisa
- 5.1 Remoção de JSON Schema do conteúdo das mensagens
- 5.2 Single Message Transformations (SMT)
- 5.3 Recepção de voos via @KafkaListener, @KafkaHandler e o KafkaNull
- 5.4 Resumo
- 6 Busca e seleção de voos no ms-pesquisa
- 6.1 Busca de voos
- 6.2 Seleção de voo
- 6.3 Integração entre o ms-pesquisa e o ms-selecao-hospedagens via Kafka Connect
- 6.4 Publicação de mudanças no schema do banco de dados por padrão
- 6.5 Formato das mensagens e o JsonConverter
- 6.6 Formato das chaves no tópico, e a concatenação de SMTs
- 6.7 Leitura de dados do MySQL pelos conectores CDC
- 6.8 Resumo
- 7 Busca e seleção de hospedagens no ms-selecao-hospedagens
- 7.1 Busca de hospedagens
- 7.2 Envio de registros do ms-selecao-hospedagens para tópicos do Kafka via Kafka Connect
- 7.3 Leitura de dados do Postgres pelos conectores CDC
- 7.4 Resumo
- 8 Boas práticas para nomes de tópicos e outros SMTs interessantes
- 8.1 Nomeação de tópicos
- 8.2 Recomendações para nomes de tópicos
- 8.3 Renomeação de tópicos no Alura Viagens com o RegexRouter
- 8.4 Uma SMT necessária: filtros
- 8.5 SMTs encadeadas e sua ordenação
- 8.6 Resumo
Kafka Streams e algumas topologias avançadas
- 9 Montagem de pacotes de viagem com o ms-pacote e o Kafka Streams
- 9.1 O ms-pacote
- 9.2 Kafka Streams
- 9.3 Montagem do fluxo de criação de pacotes de viagem com o KStream
- 9.4 Problemas com as chaves usadas
- 9.5 Encadeamento de SMTs ao resgate e o SMT ValueToKey
- 9.6 Resumo
- 10 Informações sobre pacotes vendidos com KTable e o ms-marketing
- 10.1 Um novo tópico para hospedagens
- 10.2 Criação da topologia e o KTable
- 10.3 Kafka Streams lento?
- 10.4 Resumo
Testes automatizados
- 11 Testes automatizados de consumo de mensagens
- 11.1 Testes unitários do ReceptorDeVoos no ms-pesquisa
- 11.2 Testes integrados de consumo de mensagens do Kafka no ms-pesquisa - @EmbeddedKafka
- 11.3 Testes integrados de consumo de mensagens do Kafka no ms-pesquisa, usando diretamente o Kafka
- 11.4 Resumo
- 12 Testes de topologias no Kafka Streams e o RocksDB
- 12.1 O RocksDB
- 12.2 Os objetos StreamsBuilderFactoryBean e KafkaStreams
- 12.3 Teste de topologia no ms-pacote
- 12.4 Testes assíncronos e a biblioteca Awaitility
- 12.5 Testes de topologia no ms-marketing
- 12.6 Resumo
Encerramento
- 13 Apêndice - Transactional Outbox Pattern (e padrões relacionados)
- 13.1 Outra collection para o ms-companhias-aereas, e transações com MongoDB
- 13.2 Transações de banco de dados e garantias de envio de mensagens
- 13.3 O Transactional Outbox Pattern e os padrões Polling Publisher e Transaction Log Tailing
- 13.4 Resumo
- 14 Bibliografia
Autor
Rodrigo Vieira Pinto
Rodrigo Vieira Pinto é Mestre em Engenharia de Software pelo IPT-SP (Instituto de Pesquisas Tecnológicas de São Paulo) e Pós-graduado em Engenharia de Software pela PUC-SP. Possui cerca de 25 anos de experiência em desenvolvimento de sistemas em Java, PHP e Ruby, passando também por C. Já trabalhou com servidores de aplicação como JBoss e Websphere, usando frameworks como EJB 2 e 3, JSP/Servlet, JSF e Hibernate (e ficou feliz quando o Spring Boot surgiu). Gosta muito de paradigmas de programação, padrões de projeto e de testes automatizados. Também ministra aulas de programação desde 2018, tanto em cursos livres quanto em faculdades, passando por Caelum, Alura, São Paulo Tech School (SPTech) e FIAP. Nas horas vagas, estuda tecnologias alternativas, história do Brasil e religião, além de praticar esportes como natação e corrida e assistir corridas de automóvel. Amante de software bem escrito, entende que a TI tem muito ainda a crescer e evoluir. E a gente, muito a contribuir.
Dados do produto
- Número de páginas:
- 284
- ISBN:
- 978-85-5519-377-4
- Data publicação:
- 05/2024