此框架是SQL Server增量订阅,用来监听增删改数据库数据变更
目前仅支持SQL Server,后续会支持 MySQL 和 Oracle,Nuget 上可以下载安装
或者使用 Nuget 命令添加包
dotnet add package Kogel.Subscribe.Mssql –version 0.0.0.1
可以用来处理 DB 主从同步,跨库同步,数据备份,同步 ES,缓存刷新等等
(一)定义需要监听表的实体类
![[Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听 [Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听](https://www.iwmyx.cn/wp-content/uploads/2022/11/frc-887a04377c80e25d3a82d168361d66b8.png)
[Display]和[Identity]属于 Kogel.Dapper.Extension 的特性如果[想了解更多请点击],[ElasticsearchType]和[Nest.PropertyName]属于 Elasticsearch 特性,如果没用到可以忽略
(二)定义表订阅
![[Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听 [Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听](https://www.iwmyx.cn/wp-content/uploads/2022/11/frc-262dbfbc4957f11b24043470e3e0d3cc.png)
如果需要此表对应多张分表可以设置
![[Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听 [Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听](https://www.iwmyx.cn/wp-content/uploads/2022/11/frc-ac08cc219a1fa929f0b1b088f67cf046.png)
(1).如果想推送订阅到 RabbitMQ 中
![[Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听 [Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听](https://www.iwmyx.cn/wp-content/uploads/2022/11/frc-9ba9e4761c7abda3e797e652a5d1375c.png)
可以通过 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
![[Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听 [Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听](https://www.iwmyx.cn/wp-content/uploads/2022/11/frc-62b60e0d98548083ab3cb1f233305f3e.png)
并且 ES 索引不存在的时候会动态创建
(4).如果想自定义实现订阅逻辑,在可以 Subscribe 订阅类中重写
![[Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听 [Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听](https://www.iwmyx.cn/wp-content/uploads/2022/11/frc-afe033ca9f62d81d95b872df2085b8da.png)
以上订阅的优先级:
![[Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听 [Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听](https://www.iwmyx.cn/wp-content/uploads/2022/11/frc-abeb46fc2db587f4bbdec7d3299a1559.png)
(三)订阅启动
启动监听所有继承自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,例如
![[Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听 [Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听](https://www.iwmyx.cn/wp-content/uploads/2022/11/frc-5b6cb56e107a86b03b3784a53d6f24ed.png)
关闭监听,在应用程序退出时执行即可
ApplicationProgram.Close();
(四)其他配置
![[Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听 [Kogel.Subscribe.Mssql]SQL Server 增量订阅,数据库变更监听](https://www.iwmyx.cn/wp-content/uploads/2022/11/frc-5711838e3cfe98ad42edb368c4aa22b4.png)
框架开源,完整框架源码可以去 Github 上下载:
https://github.com/a935368322/Kogel.Subscribe.Mssql






