[Kogel.Subscribe.Mssql]SQL Server增量订阅,数据库变更监听

此框架是SQL Server增量订阅,用来监听增删改数据库数据变更

目前仅支持SQL Server,后续会支持MySQL和Oracle,Nuget上可以下载安装

或者使用Nuget命令添加包

dotnet add package Kogel.Subscribe.Mssql --version 0.0.0.1

 可以用来处理DB主从同步,跨库同步,数据备份,同步ES,缓存刷新等等 

(一)定义需要监听表的实体类 

887a04377c80e25d3a82d168361d66b8.png

[Display]和[Identity]属于Kogel.Dapper.Extension的特性如果[想了解更多请点击],[ElasticsearchType]和[Nest.PropertyName]属于Elasticsearch特性,如果没用到可以忽略 

(二)定义表订阅

262dbfbc4957f11b24043470e3e0d3cc.png

如果需要此表对应多张分表可以设置

ac08cc219a1fa929f0b1b088f67cf046.png

(1).如果想推送订阅到RabbitMQ中

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

62b60e0d98548083ab3cb1f233305f3e.png

并且ES索引不存在的时候会动态创建 

(4).如果想自定义实现订阅逻辑,在可以Subscribe订阅类中重写

afe033ca9f62d81d95b872df2085b8da.png

以上订阅的优先级:

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,例如

5b6cb56e107a86b03b3784a53d6f24ed.png

关闭监听,在应用程序退出时执行即可

ApplicationProgram.Close();

(四)其他配置

5711838e3cfe98ad42edb368c4aa22b4.png

框架开源,完整框架源码可以去Github上下载:

https://github.com/a935368322/Kogel.Subscribe.Mssql

如有问题也可以加QQ群讨论:

技术群 710217654

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/280780.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java instanceof运算符

instanceof 运算符 该运算符用于操作对象实例&#xff0c;检查该对象是否是一个特定类型&#xff08;类类型或接口类型&#xff09;。 instanceof运算符使用格式如下&#xff1a; ( Object reference variable ) instanceof (class/interface type) 如果运算符左侧变量所指的对…

C# XML添加删除/SelectNodes/xpath

SelectNodes中的XPath //从当前节点的儿子节点中选择名称为 item 的节点。 SelectNodes("item")//从根节点的儿子节点中选择名称为 item 的节点。 SelectNodes("/item")// 从任意位置的节点上选择名称为 item 的节点。要重点突出这个任意位置&#xff0c;…

Python中*args 和**kwargs的用法

http://blog.csdn.net/chenjinyu_tang/article/details/8136841 好久没有学习python了&#xff0c;应为工作的需要&#xff0c;再次拾起python&#xff0c;唤起记忆。 当函数的参数不确定时&#xff0c;可以使用*args 和**kwargs&#xff0c;*args 没有key值&#xff0c;**kwar…

MFC载入JPG图片

## 1.定义画图函数 HRESULT CIPCamDlg::draw(char *lpImageFile, HWND hWnd, int nScrWidth, int nScrHeight) {HDC hDC_Temp::GetDC(hWnd);IPicture *pPic; IStream *pStm;BOOL bResult;HANDLE hFileNULL; DWORD dwFileSize,dwByteRead;hFileCreateFile(lpImageFile,GENERIC_R…

DLR 的扩展库 Dynamitey

.NET 在 CLR 对动态语言或者脚本语言的支持是通过DLR 完成的&#xff0c; Miguel de Icaza对 DLR 的特点概括如下&#xff1a;一个针对动态语言的共享式类型系统&#xff1b;一个共享的 AST&#xff0c;可以被语言开发人员用来创建新的动态语言&#xff1b;针对编译器开发人员的…

MFC 单选按钮Radio使用注意

使用MFC Radio时遇到问题&#xff1a;数据交换时出现断言崩溃框 定位于&#xff1a; 解决方法&#xff1a; 1、按CTRLD&#xff0c;保证同一组内的radio的tab序号是连续的&#xff1b; 2、同一组内&#xff0c;设置 radio1的属性&#xff1a; group、tabstop、auto均为true&am…

C# 字符串操作:split、substring、Format

1.split split可以使用多个字符切割。 "test[12]"切割后是3个字符串&#xff0c;最后一个为空。 string testString "test[12]";string[] testData testString.Split([,]);int testLength testData.Length;Console.WriteLine(testLength.ToString());…

flac格式转换mp3格式_MP3,FLAC和其他音频格式之间有什么区别?

flac格式转换mp3格式Digital audio has been around a very long time so there’s bound to be a plethora of audio formats out there. Here are some of the more common ones, what differentiates them, and what to use them for. 数字音频已经存在了很长时间&#xff…

Kubernetes:Flomesh 服务网格与多集群通信

Kubernetes 成功普及了容器集群的概念。许多用户已经在多个集群中部署应用&#xff0c;组织需要运行多个 Kubernetes 集群可能来自以下原因&#xff08;并非详尽列表&#xff09;&#xff1a;• 位置• 延迟&#xff08;尽可能在靠近客户的地方运行应用程序&#xff09;• 管辖…

Java四种线程池的使用

FixedThreadPool 由Executors的newFixedThreadPool方法创建。它是一种线程数量固定的线程池&#xff0c;当线程处于空闲状态时&#xff0c;他们并不会被回收&#xff0c;除非线程池被关闭。当所有的线程都处于活动状态时&#xff0c;新的任务都会处于等待状态&#xff0c;直到有…

袁永福软件行业从业经历

简化版》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》》 袁永福简历 袁永福&#xff0c;男&#xff0c;1980年生于江西省九江市都昌县&#xff0c;2001年南京东南大学动力工程系本科毕业。毕业后一直从事计算机软件开发工作&…

小程序之地图导航

同学们平常使用地图的时候应该都有注意到&#xff0c;当我们在一个应用中选择一个地址&#xff0c;打开一个地图&#xff0c;往往会有两种显示方式&#xff0c;一个是显示当前自己的位置&#xff1b;一个是显示对方&#xff0c;也就是目的地的位置&#xff1b;如下图&#xff1…

PS2019摄影后期处理(一)

高高手之路笔记 一、学习方法 内外兼修&#xff1a;技术会淘汰、更新&#xff0c;自己内在也要提高。 二、照片格式、色彩空间 JPEG TIFF RAW sRGB&#xff1a;互联网相关图片&#xff0c;电子设备 三、照片风格 自己定义照片格式&#xff0c;直接后期效果 相机自带工具&a…

mdnsresponder_什么是mDNSResponder.exe / Bonjour,如何卸载或删除它?

mdnsresponderYou are no doubt reading this article because you’ve noticed the mDNSResponder.exe process running in Task Manager, you don’t remember installing it, and it doesn’t show up in the Add/Remove programs in Control Panel. So what is it, and how…

Windows 10下,如何使用PowerShell批量重启局域网电脑

PowerShell 在Windows 10中越来越受到微软重视&#xff0c;甚至被微软安排在开始按钮超级菜单中替换了一直以来默认的命令提示符(当然还可以换回去)&#xff0c;这和该工具越来越强大密不可分。这次就介绍一个“群重启”命令&#xff0c;可让局域网内的电脑集体重启。1、单机重…

.NET MAUI学习指南

由于.NET MAUI这项技术出来不久相关的学习资源暂时除了官网以外没有太好的学习资源&#xff0c;这篇文章主要向大家分享几种学习.NET MAUI的学习途径&#xff0c;如果有好的学习资源欢迎大家私信给我然后更新到后续的文章里。&#xff08;以下推荐学习途径均为免费且无广告的资…

循序渐进DB2(第2版)——DBA系统管理、运维与应用案例

《循序渐进DB2(第2版)——DBA系统管理、运维与应用案例》基本信息作者&#xff1a; 牛新庄出版社&#xff1a;清华大学出版社ISBN&#xff1a;9787302323013上架时间&#xff1a;2013-7-3出版日期&#xff1a;2013 年7月开本&#xff1a;16开页码&#xff1a;612版次&#xff1…

Oracle Unicode转中文(解码)

Oracle Unicode转中文&#xff08;解码&#xff09; CreateTime--2018年3月29日15:23:30 Author:Marydon 情景描述&#xff1a; 将数据库中的某个字段误存储的是Unicode编码&#xff0c;需要将其改成中文。 测试&#xff1a; --将Unicode转中文 select unistr(REPLACE(\u6d4b\u…

PS2019摄影后期处理(二)

一、曲线 二、曲线与通道 三、HSL局部调整 色相、饱和度、亮度 a.色相&#xff1a;一个颜色&#xff0c;帽子是红色 b.饱和度&#xff1a;树木葱郁一点 c.饱和度&#xff1a;衣服连杆 便黑白&#xff1a; 1.调低所有饱和度 2.将某个颜色饱和度提高&#xff0c;再转灰度。…

管理员获得所有权_在Windows 7中获得注册表项的所有权

管理员获得所有权We have previously written about how to take ownership of files and folders in Windows 7, but there may be times when you need to take ownership of or assign full permission for certain registry keys. This article shows you how to do this. …