public interface CanalConnector
| 限定符和类型 | 方法和说明 |
|---|---|
void |
ack(long batchId)
进行 batch id 的确认。
|
boolean |
checkValid()
检查下链接是否合法
几种case下链接不合法:
1.
|
void |
connect()
链接对应的canal server
|
void |
disconnect()
释放链接
|
com.alibaba.otter.canal.protocol.Message |
get(int batchSize)
获取数据,自动进行确认,该方法返回的条件:尝试拿batchSize条记录,有多少取多少,不会阻塞等待
|
com.alibaba.otter.canal.protocol.Message |
get(int batchSize,
Long timeout,
TimeUnit unit)
获取数据,自动进行确认
该方法返回的条件:
a.
|
com.alibaba.otter.canal.protocol.Message |
getWithoutAck(int batchSize)
不指定 position 获取事件,该方法返回的条件: 尝试拿batchSize条记录,有多少取多少,不会阻塞等待
canal 会记住此 client 最新的position。 |
com.alibaba.otter.canal.protocol.Message |
getWithoutAck(int batchSize,
Long timeout,
TimeUnit unit)
不指定 position 获取事件.
|
void |
rollback()
回滚到未进行
ack 的地方,下次fetch的时候,可以从最后一个没有 ack 的地方开始拿 |
void |
rollback(long batchId)
回滚到未进行
ack 的地方,指定回滚具体的batchId |
void |
subscribe()
客户端订阅,不提交客户端filter,以服务端的filter为准
|
void |
subscribe(String filter)
客户端订阅,重复订阅时会更新对应的filter信息
说明:
a.
|
void |
unsubscribe()
取消订阅
|
void connect()
throws com.alibaba.otter.canal.protocol.exception.CanalClientException
com.alibaba.otter.canal.protocol.exception.CanalClientExceptionvoid disconnect()
throws com.alibaba.otter.canal.protocol.exception.CanalClientException
com.alibaba.otter.canal.protocol.exception.CanalClientExceptionboolean checkValid()
throws com.alibaba.otter.canal.protocol.exception.CanalClientException
几种case下链接不合法: 1. 链接canal server失败,一直没有一个可用的链接,返回false 2. 当前客户端在进行running抢占的时候,做为备份节点存在,非处于工作节点,返回false 说明: a. 当前客户端一旦做为备份节点存在,当前所有的对CanalConnector的操作都会处于阻塞状态,直到转为工作节点 b. 所以业务方最好定时调用checkValid()方法用,比如调用CanalConnector所在线程的interrupt,直接退出CanalConnector,并根据自己的需要退出自己的资源
com.alibaba.otter.canal.protocol.exception.CanalClientExceptionvoid subscribe(String filter) throws com.alibaba.otter.canal.protocol.exception.CanalClientException
说明: a. 如果本次订阅中filter信息为空,则直接使用canal server服务端配置的filter信息 b. 如果本次订阅中filter信息不为空,目前会直接替换canal server服务端配置的filter信息,以本次提交的为准 TODO: 后续可以考虑,如果本次提交的filter不为空,在执行过滤时,是对canal server filter + 本次filter的交集处理,达到只取1份binlog数据,多个客户端消费不同的表
clientIdentity - com.alibaba.otter.canal.protocol.exception.CanalClientExceptionvoid subscribe()
throws com.alibaba.otter.canal.protocol.exception.CanalClientException
clientIdentity - com.alibaba.otter.canal.protocol.exception.CanalClientExceptionvoid unsubscribe()
throws com.alibaba.otter.canal.protocol.exception.CanalClientException
clientIdentity - com.alibaba.otter.canal.protocol.exception.CanalClientExceptioncom.alibaba.otter.canal.protocol.Message get(int batchSize)
throws com.alibaba.otter.canal.protocol.exception.CanalClientException
batchSize - com.alibaba.otter.canal.protocol.exception.CanalClientExceptioncom.alibaba.otter.canal.protocol.Message get(int batchSize,
Long timeout,
TimeUnit unit)
throws com.alibaba.otter.canal.protocol.exception.CanalClientException
该方法返回的条件: a. 拿够batchSize条记录或者超过timeout时间 b. 如果timeout=0,则阻塞至拿到batchSize记录才返回
batchSize - com.alibaba.otter.canal.protocol.exception.CanalClientExceptioncom.alibaba.otter.canal.protocol.Message getWithoutAck(int batchSize)
throws com.alibaba.otter.canal.protocol.exception.CanalClientException
batchSize - com.alibaba.otter.canal.protocol.exception.CanalClientExceptioncom.alibaba.otter.canal.protocol.Message getWithoutAck(int batchSize,
Long timeout,
TimeUnit unit)
throws com.alibaba.otter.canal.protocol.exception.CanalClientException
该方法返回的条件: a. 拿够batchSize条记录或者超过timeout时间 b. 如果timeout=0,则阻塞至拿到batchSize记录才返回canal 会记住此 client 最新的position。
batchSize - timeout - unit - com.alibaba.otter.canal.protocol.exception.CanalClientExceptionvoid ack(long batchId)
throws com.alibaba.otter.canal.protocol.exception.CanalClientException
batchId - com.alibaba.otter.canal.protocol.exception.CanalClientExceptionvoid rollback(long batchId)
throws com.alibaba.otter.canal.protocol.exception.CanalClientException
ack 的地方,指定回滚具体的batchIdcom.alibaba.otter.canal.protocol.exception.CanalClientExceptionvoid rollback()
throws com.alibaba.otter.canal.protocol.exception.CanalClientException
ack 的地方,下次fetch的时候,可以从最后一个没有 ack 的地方开始拿com.alibaba.otter.canal.protocol.exception.CanalClientExceptionCopyright © 2013. All rights reserved.