此框架是SQL Server增量訂閱,用來監聽增刪改數據庫數據變更
目前僅支持SQL Server,后續會支持MySQL和Oracle,Nuget上可以下載安裝
或者使用Nuget命令添加包
dotnet add package Kogel.Subscribe.Mssql --version 0.0.0.1
?可以用來處理DB主從同步,跨庫同步,數據備份,同步ES,緩存刷新等等?
(一)定義需要監聽表的實體類?
[Display]和[Identity]屬于Kogel.Dapper.Extension的特性如果[想了解更多請點擊],[ElasticsearchType]和[Nest.PropertyName]屬于Elasticsearch特性,如果沒用到可以忽略?
(二)定義表訂閱
如果需要此表對應多張分表可以設置
(1).如果想推送訂閱到RabbitMQ中
可以通過BuildTopic設置交換機名稱
builder.BuildTopic("kogel_subscribe_order_detail")
(2).如果想推送訂閱到Kafka中
builder.BuildKafka(new ProducerConfig{BootstrapServers = "localhost:9092",Acks = Acks.None})
可以通過BuildTopic設置Topic名稱
builder.BuildTopic("kogel_subscribe_order_detail")
(3).如果想推送訂閱到Elasticsearch中
builder.BuildElasticsearch(new ElasticsearchConfig<OmsOrderDetail>{Settings = new Nest.ConnectionSettings(new Uri("http://localhost:9200/")),})
如果有設置Basic授權
builder.BuildElasticsearch(new ElasticsearchConfig<OmsOrderDetail>
{Settings = new Nest.ConnectionSettings(new Uri("http://localhost:9200/")).BasicAuthentication("賬號","密碼")})
如果想根據自己定義的分片邏輯插入到多個ES索引中可以通過WriteInterceptor
并且ES索引不存在的時候會動態創建?
(4).如果想自定義實現訂閱邏輯,在可以Subscribe訂閱類中重寫
以上訂閱的優先級:
(三)訂閱啟動
啟動監聽所有繼承自Subscribe<T>的類,在應用程序啟動時執行即可
ApplicationProgram.Run();
啟動前需要確保DB已經開啟了SQL Server Agent
windows環境可以通過cmd命令開啟
net start SQLSERVERAGENT
linux或docker環境可以通過以下命令開啟
/opt/mssql/bin/mssql-conf set sqlagent.enabled true
如果是基礎BaseSubscribe<T>中間基類需要定義成abstract,例如
關閉監聽,在應用程序退出時執行即可
ApplicationProgram.Close();
(四)其他配置
框架開源,完整框架源碼可以去Github上下載:
https://github.com/a935368322/Kogel.Subscribe.Mssql
如有問題也可以加QQ群討論:
技術群 710217654