基於canal的Spring-Boot-Starter

前言

    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環境的前提。

  1. 獲取源碼。源碼地址:chenqian56131
  2. 將源碼中的starter-canl項目打包引入或者通過maven安裝到倉庫。
  3. 在自己的Spring-Boot項目中:
  4. 加入配置:
    canal.client.instances.example.host=127.0.0.1
    canal.client.instances.example.port=11111
  5. 編寫自己的Listener(參照canal-test中的MyEventListener)
  6. 啓動。---》OK!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章