您的位置:首页 > 编程语言 > Java开发

自定义spring schema简化与canal集成

2015-08-16 21:03 309 查看
摘要: canal是阿里巴巴团队基于数据库日志增量订阅&消费的框架,项目中我们经常使用Spring来集成管理其它框架,本文讲述自定义spring xsd schema的方式配置集成canal到Spring容器.
项目地址:http://git.oschina.net/damivip/spring-xsd-canal

canal是阿里巴巴团队基于数据库日志增量订阅&消费的框架,项目中我们经常使用Spring来集成管理其它框架,本文讲述自定义spring xsd schema的方式配置集成canal到Spring容器.

项目地址:http://git.oschina.net/damivip/spring-xsd-canal

使用canal可以清楚的知道数据库记录的IUD的具体内容。

新增:可解析出新增数据的字段和内容

删除:可解析出删除数据的行所有内容

更新:可解析出更新记录前后的字段内容,和更新的字段是哪些

1.应用场景:

B2C网站更新订单(用户下单/退单),订单业务相关的其他非实时服务需要被通知。
常规方式是B2C使用消息中间件通知其他服务,当DBA因特殊情况直接更改数据库数据时,其他服务就无法得到此消息,而使用canal能知道所有来自数据库的更改,无需其他服务通知,完全的业务解耦。

2.配置预览

自己写了一个简单的spring xsd schema,简化canal配置,如下:

<config:canal-config
id="singleCanalClient"
destination="example"
fetchSize="1"
host="localhost:2181,localhost:2182,localhost:2183" hostType="zkCluster">
<!-- 处理所有库表IUD-->
<config:globalInvoke value="globalCanalInvoke"/>
<config:tableInvoke>
<!-- 指定数据库database表tableName 暂不支持通配符方式-->
<config:invoke database="test" tableName="user">
<config:bean ref="globalCanalInvoke"/>
</config:invoke>
</config:tableInvoke>
</config:canal-config>

hostType 可选:

socketCluster:socket集群方式

zkCluster:zookeeper集群方式

single:但服务器方

destination字段对应canal服务配置中的instance名字;

fetchSize 表示尝试拿记录条数

globalInvoke 所有数据库表IDU操作时,执行globalInvoke制定的javaBean方法

tableInvoke 制定数据库和表执行IDU操作时,调用特定javaBean的方法

3. 测试用例

@Test
public void testStartClient() throws Exception {
String xml = "classpath:conf/applicationContext.xml";
ApplicationContext context = new ClassPathXmlApplicationContext(new String[] { xml });
System.out.println(context.getBean("singleCanalClient"));
System.in.read();
}

详细内容参考:http://git.oschina.net/damivip/spring-xsd-canal
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring schema canal