54 lines
1.3 KiB
Markdown
54 lines
1.3 KiB
Markdown
# 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/)
|