Olá pessoal, me chamo Ronaldo Lanielas e nessa aula vou mostrar para vocês como usar o REST Prox para poder fazer operações no Kafka via API REST. Então primeiro vou abrir meu Docker Compose ele é exatamente o mesmo Docker Compose que a gente vem usando durante todas as aulas. A mesma coisa que eu adicionei a mais foi essa seção de REST. Então, aqui a gente tem a imagem do REST Prox, da Confluence, e as propriedades que eu preciso para ele. Então, como no meu caso é localhost, eu coloquei o hostname dele como localhost. O Bootstrap Cesar é para dizer para ele como é que ele conecta no Kafka. Então, aqui é plaintext, mas se fosse um Kafka comculo com ssl etc você tem que colocar o ssl aqui e o listener é em que ter fácil ele escuta é as conexões que são feitas para ele não acontece faz uma chamada lá na pei rest aqui ele está escutando mas é zero então vai ser em todas as interfaces de rede lá que tem nesse network docker, nessa rede docker que eu criei com docker-compose, na porta 8082. Bom, vamos subir aqui, dar um docker-compose up-d para ele subir meus containers em background só um minuto a gente tem um docker-compose ps você vai ver que está tudo rodando, eu vou dar um logs aqui nesse Kafka REST que foi o container que eu acabei de criar então ele está guardando o Kafka Health porque tem um depend zone lá ainda não está, Vou enganar um pouco. Perfeito. Bom, eu diria que se a gente parar para pensar nas ferramentas de Kafka, que a gente tem visto durante as aulas, Kafka Connect, Cacico, etc. Eu diria que o REST Proxy é uma das mais diretas e simples. Não em relação à implementação dele, mas em relação à utilidade. Ele é uma API REST, onde você consegue realizar operações no cluster de Kafka. Tão simples quanto isso. Então, para ajudar a gente, eu vou abrir aqui a página da Conflict, que tem a definição de todas as APIs que a gente pode usar no REST Prox. E aqui eu tenho tanto a API v2 e a v3, a gente vai direto para a v3 aqui, e aí eu posso manipular uma série de componentes do Kafka via REST. Bom, eu vou começar pelo cluster aqui. Eu não vou passar em todas, né, depois você pode olhar com calma cada uma dessas APIs, tá? Mas aqui ele vai me trazer todas as informações do cluster de Kafka. Então se eu simplesmente vier aqui, colocar a porta 8.32, lembra que foi essa que eu defini na logCompose. V3, que é a versão da minha API clusters. Ele deve retornar para mim. Aqui, olha. Todos os clusters que tem, estão sob o domingo do meu Kafka REST Proxy e aqui tem o ID do cluster, muito importante, a gente vai já usar ele. Então aqui eu tenho informações de ACL, por exemplo, se eu quiser ver informações sobre segurança, enfim, no meu cluster, posso vir aqui no ACL, se eu quiser ver informações sobre meus brokers, eu posso simplesmente copiar essa URL, adicionar uma nova request aqui, é um get, tá? E vou... legal, então assim, esse modelo aqui de REST, ele é bem conhecido como HATEOAS, então se você der uma gulgada depois como HATEOAS, algumas pessoas chamam HATEOAS, etc, mas é o HATEOAS, esse carinha aqui, ele preza esse tipo de retorno no MapIrest para que você consiga fazer follow-up em outras páginas. Então, quando você bate num V3 Clusters aqui, além de retornar a informação do cluster, ele te dá links para que você possa ir para outras URLs, por exemplo, que tenham, obviamente, algum tipo de link com o cluster. Como o broker está linkado num cluster, eu consigo, através da minha resposta de cluster, também ver os brokers. Então, fica bem fácil eu navegar aqui sobre qualquer tipo de informação de consumers, tópicos, etc. Então, dá para você dar uma olhada aí nesse HOS, HOS, enfim, como queira, que ajuda bastante quando a gente está trabalhando com o REST. Bom, então eu peguei a informação do cluster, como é que a gente faz para produzir um registro usando o Kafka REST Proxy? Existe uma URL chamada cluster, onde você passa o cluster ID, por isso que eu falei que era tão importante você pegar esse ID aqui. E aí você passa o nome do tópico. E o record. Eu vou abrir aqui o meu khq. Para vocês verem que não tem nenhum tópico. E aí eu vou aqui no meu postman. Vou só pegar aqui o id do meu cluster. Vou trocar aqui. Eu vou chamar de rectprox. Vai ser o nome do meu cluster, vou trocar aqui. Eu vou chamar de REST Proxy, vai ser o nome do meu tópico. E aí ele pede esse record, que é para você dizer que você vai gravar um registro. Nesse caso eu vou gravar um registro do tipo string, tá? MyMessage, é o payload, é o value desse registro. É o payload, é o value desse registro. Se você der uma olhada aqui, na própria doc tem diversos exemplos sobre como gravar binário, JSON, string, etc. Eu fiz um bem simples aqui, que é simplesmente um valor que contém uma string. um valor que contém uma string. Então quando eu dou send ele me retorna aqui, deu 200 nome do tópico, qual foi a partição que ele gravou, offset e aí se eu for agora na khq ele está aqui a informação foi gravada perfeito. E aí como eu falei, você pode vir aqui na doc e olhar que tem como, por exemplo, mandar uma key, se você quiser mandar uma key, você pode, ou, por exemplo, se você quiser colocar um header, posso vir aqui, vou copiar esse carinha aqui agora, e vou passar alguns headers, vou mandar um send de novo, agora está no offset 1 e como você pode ver agora aqui esse carinha tem dois headers exatamente o header que eu gravei lá. Então o que eu queria deixar claro para vocês É que o REST Proxy no final das contas É um meio que você tem Para se comunicar com o seu Kafka Broker Sem precisar criar uma aplicação Então por exemplo Normalmente você precisaria criar uma aplicação Para produzir no Kafka Ou usar um CLI O Kafka tem CLI para fazer isso Ou usar uma KHQ para fazer isso. E aí imagina que você tem um cliente que precisa gravar no Kafka, só que ele não quer implementar ou usar nenhum tipo de driver nativo do Kafka, que seria o ideal. Se o seu TPS não for muito alto, eu não vejo problema nenhum em você usar o REST Proxy, e aí você passa para o seu cliente que ele pode chamar uma API que vai gravar no Kafka. E aí fica tudo mais simples porque você simplesmente vai usar uma API REST que todo mundo sabe como usar e implementar e não vai utilizar nenhum tipo de driver nativo do Kafka para fazer isso. Lembrando que performance é muito importante aqui. Quando a gente fala de API REST e driver nativo do carro usando TCP a gente está falando de performance totalmente diferente então para baixa performance aqui atende muito bem se você não tiver um TPS muito alto é isso pessoal, espero que vocês tenham gostado e até a próxima