# MyCDC - MySQL change data capture Application to run asynchronous operations based on DB changes. It is divided into three services: - RabbitMQ: Service that allows the exchange and queuing of messages between applications. - Producer: Reads and filters changes from the DB binary log and adds the relevant messages to each RabbitMQ queue. - Consumer: Obtains the elements from the queues and performs the necessary operations asynchronously. ## Environment setup Because a bug with MariaDB wich it's fix is pending to be merged into main project branch, a *zongji* fork must be cloned into project root directory. More info at https://github.com/nevill/zongji/issues/143 ```text git clone https://github.com/juan-ferrer-toribio/zongji.git cd zongji git checkout fix-143 npm install ``` Apply *zongji.sql* script into DB. Copy *producer.json* and *consumer.json* from *config* directory to *producer.local.json* and *consumer.local.json* and place your local configuration there. Install dependencies. ```text npm install ``` ## Run application Start rabbit. ```text npm run rabbit ``` Start producer and consumer. ```text npm start npm run consumer ``` ## Built With * [Zongji](https://github.com/nevill/zongji) * [MySQL2](https://github.com/sidorares/node-mysql2#readme) * [RabbitMQ] (https://www.rabbitmq.com/)