本文主要是介绍canal adapter支持Elasticsearch 5.X版本配置,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
日常踩坑,现在公司使用的ES还是5.3.3版本,但是canal目前只支持6.X以上版本,canal是这么建议的:
canal adapter 的 Elastic Search 版本支持6.x.x以上, 如需其它版本的es可替换依赖重新编译client-adapter.elasticsearch模块
一般人理解似乎只需要改动依赖版本然后打包就O了,但是启动会报错,后面定位是transportAddress的问题,改动如下:
- 先将elasticsearch下的pom文件中依赖的elasticsearch相关组件的版本号降至5.X
<dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>5.3.3</version></dependency><dependency><groupId>org.elasticsearch.client</groupId><artifactId>transport</artifactId><version>5.3.3</version></dependency>
- com.alibaba.otter.canal.client.adapter.es.ESAdapter类中
transportClient.addTransportAddress(new TransportAddress(InetAddress.getByName(host.substring(0, i)),
Integer.parseInt(host.substring(i + 1))));
修改成以下:
transportClient.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName(host.substring(0, i)),Integer.parseInt(host.substring(i + 1))));
即把TransportAddress替换成InetSocketTransportAddress
不要忘记把InetSocketTransportAddress import进来
- 重新编译打包
mvn clean install -Dmaven.test.skip -Denv=release
具体使用过程可以参考另外一篇博客:MySQL实时同步到Elasticsearch实现方案 —— canal(兼容ES5.X)
这篇关于canal adapter支持Elasticsearch 5.X版本配置的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!