Mongdb 4 Change Streams实时同步

文章目录

    • Mongodb 4 Change Streams
      • 官网地址
      • Change Streams使用

Mongodb 4 Change Streams

这几天公司让更新mongdb老项目实时同步,mongodb升级到了4.0版本,原先实时同步通过oplog的代码不起作用力,本人对mongdb不懂很无奈,查了很多资料终于在官网找到了change streams的代替,很多解决办法官网上都有但有时候又没时间去细看很纠结…

官网地址

https://docs.mongodb.com/manual/changeStreams/

Change Streams使用

jar选择:org.mongodb:mongodb-driver:3.10.2 一开始使用了3.6.x的版本发现并没有根据database去watch监控的方法只有collection的watch api,试了下最新的版本发现有根据database去watch监控的api

第一步获取databse:
老代码并没有做修改
Mongdb 4 Change Streams实时同步_第1张图片
获取到databse后就可以调用watch方法进行监控
Mongdb 4 Change Streams实时同步_第2张图片
watch进行监控,fullDocument方法是为了获取所有更新的数据,resumeAfter是为了做一个断点续传功能,防止服务挂了第二次重启不会丢失数据,返回值是一个迭代器。
老版的oplog 断点续传是根据时间戳去做的,我现在这个断点续传是根据当前ChangeStreamDocument 的resumetoken去做的,也是简单的使用了下io流进行了个本地保存,启动服务的时候去文件里查一下,如果存在resumetoken调用resumeAfter方法,如果不存在就不调用。
最后也是按照之前的log日志文件格式,用json封装了下当有数据产生就会网日志文件打印相应的json数据。
有了日志文件后,就可以走离线处理或者使用flume实时监控日志文件再传输到kafka做实时处理了。

上面的配置也都是简单阅读了官网后进行更改的,如果有其他更好的方法或者哪里写了不妥请指出。

你可能感兴趣的:(Mongdb 4 Change Streams实时同步)