一、多樣輸出支援
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仍然很亂,也沒時間去優化了,先就這樣將就用吧。
朋友會在“發現-看一看”看到你“在看”的內容