此框架是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