Giter VIP home page Giter VIP logo

kafka-mysql's Introduction

Projeto

  • Debezium para escutar mudanças no MySql
  • Kafka para criar um tópico que armazena essas alterações
  • Service Worker que ficará rodando em background consumindo o tópico e atualizando o cache
  • Web API que nos retorna o cache sempre atualizado.

Instalação

Use o docker-compose para subir os serviços necessários

  • Mysql que é nosso Banco de dados.
  • Zookeeper é responsável por armazenar nossas chaves e valores
  • Kafka para que possamos criar a fila
  • Connector para enviarmos alterações na base para a fila no Kafka
docker-compose up

Para carregar dados no Mysql, abra um novo terminal e execute:

docker-compose exec mysql bash -c "mysql -u root -p\$MYSQL_ROOT_PASSWORD"

Password = root

create database cardb;
use cardb;
create table cars
(id int unsigned auto_increment primary key,
name varchar(50),
color varchar(15),
price int,
creation_time datetime default current_timestamp,
modification_time datetime on update current_timestamp);
insert into cars(name, color, price) values("Fusca", "Amarelo", 50.000);

Mais operações

insert into cars(name, color, price) values("Gol", "Prata", 40.000);
update cars set price = 10.000 where name = "Fusca";
delete from cars where id = 1;

Configurando o nosso conector carddb-connector para pegarmos as alterações na base de dados e mandar para a fila:

Abra uma nova aba no terminal e execute:

curl -L -X POST 'localhost:8083/connectors/' -H 'Content-Type: application/json' --data-raw '{
    "name": "cardb-connector",
    "config": {
    "connector.class": "io.debezium.connector.mysql.MySqlConnector",
    "tasks.max": "1",
    "database.hostname": "mysql",
    "database.port": "3306",
    "database.user": "root",
    "database.password": "root",
    "database.server.id": "223345",
    "database.server.name": "mysql",
    "database.whitelist": "cardb",
    "database.history.kafka.bootstrap.servers": "kafka:9092",
    "database.history.kafka.topic": "dbhistory.cardb",
    "transforms": "unwrap",
    "transforms.unwrap.type": "io.debezium.transforms.UnwrapFromEnvelope",
    "transforms.unwrap.drop.tombstones": "false",
    "key.converter": "org.apache.kafka.connect.json.JsonConverter",
    "key.converter.schemas.enable": "false",
    "value.converter": "org.apache.kafka.connect.json.JsonConverter",
    "value.converter.schemas.enable": "false",
    "include.schema.changes": "false"
    }
}'

Para verificarmos se nosso conector está funcionando, vamos consumir nosso tópico mysql.cardb.cars, execute:

docker-compose exec kafka bash
kafka-console-consumer --bootstrap-server kafka:9092 --from-beginning --topic mysql.cardb.cars

Obs: Note que usamos o --from-beginning para trazer as mensagem da fila desde o começo.

Aplicação

Para verificar se as mudanças no banco de dados refletiram na aplicaçao, Rode e vá para http://localhost:5000/car/1

Teste de Integração

Para verificar se tudo foi instalado corretamente, execute o teste de integração:

alt text

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.