歡迎光臨
每天分享高質量文章

CanalSharp.AspNetCore v0.0.4-支持輸出到MongoDB

一、多樣輸出支持

  CanalSharp.AspNetCore是一個基於CanalSharp的適用於ASP.NET Core的一個後臺任務組件,它可以隨著ASP.NET Core實體的啟動而啟動,目前採用輪詢的方式對Canal Server進行監聽,獲得MySql行更改(RowChange)後寫入MySql指定的記錄表中。在此次更新中,可以支持寫入MongoDB資料庫了,換句話說,可以支持MySql或MongoDB二選一的輸出方式了。

  這個專案的GitHub地址為:https://github.com/XiLife-OSPC/CanalSharp.AspNetCore


二、新的配置內容

  為了同時支持MySql及MongoDB,請更新CanalSharp.AspNetCore至0.0.4版本:

  然後,如果要輸出到MySql請更新以下配置到appSettings.json:

"Canal": {    "Enabled": true,    "LogSource": "Core.Product.Canal",    "ServerIP": "192.168.16.190", // Canal-Server IP    "ServerPort": 8001, // Canal-Server 端口號    "Destination": "products", // 與Canal-Server中配置的destination保持一致    "Filter": "xdp_products_dev\\..*", // 與Canal-Server中配置的filter保持一致    "SleepTime": 100, // 空閑時間睡眠時間    "BufferSize": 2048, // 如果涉及到更改的資料量較大請將BufferSize設大一些    "Output": {      "MySql":{        "ConnStr": "Server=192.168.16.150;Port=3306;Database=products_dev;Uid=dev;Pwd=xdp" // 要輸出的日誌記錄表所在的MySql連接字串      }    }  }

  如果要輸出到MongoDB請更新以下配置到appSettings.json:

"Canal": {    "Enabled": true,    "LogSource": "Core.Product.Canal",    "ServerIP": "192.168.16.190", // Canal-Server IP    "ServerPort": 8001, // Canal-Server 端口號    "Destination": "products", // 與Canal-Server中配置的destination保持一致    "Filter": "xdp_products_dev\\..*", // 與Canal-Server中配置的filter保持一致    "SleepTime": 100, // 空閑時間睡眠時間    "BufferSize": 2048, // 如果涉及到更改的資料量較大請將BufferSize設大一些    "Output": {      "Mongo": {        "ConnStr": "mongodb://192.168.16.150:27017",        "DataBase": "xdp_behaviors_dev"      }    }  }

  就這點配置檔案的改動,其他的無需改動。

  具體的Sample示例可以參考這裡:CanalSharp.AspNetCore.Sample

三、效果演示

  當在指定要監聽的資料庫對某張表的某行資料進行Update或Delete操作後,又或者進行Insert行操作後。

3.1 MySql

  如果選擇輸出到MySql資料庫,那麼canal.logs表(該表會自動創建)會自動記錄變更的記錄資料如下圖所示:

PS:INSERT操作會記錄新增的資料行資料到CurrentValue列,
DELETE操作會記錄刪除的資料行資料到PreviousValue列,
UPDATE操作則會記錄修改前PreviousValue和修改後的值CurrentValue。

3.2 MongoDB

  如果選擇輸出到MongoDB,那麼會自動記錄變更資料到你指定的資料庫中的changelogs中如下圖:

  就這樣吧,Code仍然很亂,也沒時間去優化了,先就這樣將就用吧。

 

    已同步到看一看
    赞(0)

    分享創造快樂