前言
canal是阿里巴巴的基於數據庫增量日誌解析,提供增量數據訂閱&消費,目前主要支持了mysql。
可以用於比如數據庫數據變化的監聽從而同步緩存(如Redis)數據等。
由於項目中基本都是使用的Spring-Boot,所以寫了一個基於Spring-Boot的starter方便使用。
特點
使用方便。可以通過簡單的配置就可以開始使用,當對某些操作感興趣的時候可以通過註解或者注入接口實現的方式監聽對應的事件。
eg:
註解方式:
@CanalEventListener
public class MyEventListener {
@InsertListenPoint
public void onEvent(CanalEntry.EventType eventType, CanalEntry.RowData rowData) {
//do something...
}
@UpdateListenPoint
public void onEvent1(CanalEntry.RowData rowData) {
//do something...
}
@DeleteListenPoint
public void onEvent3(CanalEntry.EventType eventType) {
//do something...
}
@ListenPoint(destination = "example", schema = "canal-test", table = {"t_user", "test_table"}, eventType = CanalEntry.EventType.UPDATE)
public void onEvent4(CanalEntry.EventType eventType, CanalEntry.RowData rowData) {
//do something...
}
}
接口實現方式:
@Component
public class MyEventListener2 implements CanalEventListener {
@Override
public void onEvent(CanalEntry.EventType eventType, CanalEntry.RowData rowData) {
//do something...
}
}
或者:
@Component
public class MyEventListener2 implements DmlCanalEventListener {
@Override
public void onInsert(CanalEntry.RowData rowData) {
//do something...
}
@Override
public void onUpdate(CanalEntry.RowData rowData) {
//do something...
}
@Override
public void onDelete(CanalEntry.RowData rowData) {
//do something...
}
}
使用方法
注意:基於已經有了數據庫環境和canal-server環境的前提。
- 獲取源碼。源碼地址:chenqian56131
- 將源碼中的starter-canl項目打包引入或者通過maven安裝到倉庫。
- 在自己的Spring-Boot項目中:
- 加入配置:
canal.client.instances.example.host=127.0.0.1 canal.client.instances.example.port=11111
- 編寫自己的Listener(參照canal-test中的MyEventListener)
- 啓動。---》OK!