public class SimpleCanalConnector extends java.lang.Object implements CanalConnector
| 构造器和说明 |
|---|
SimpleCanalConnector(java.net.SocketAddress address,
java.lang.String username,
java.lang.String password,
java.lang.String destination) |
SimpleCanalConnector(java.net.SocketAddress address,
java.lang.String username,
java.lang.String password,
java.lang.String destination,
int soTimeout) |
SimpleCanalConnector(java.net.SocketAddress address,
java.lang.String username,
java.lang.String password,
java.lang.String destination,
int soTimeout,
int idleTimeout) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
ack(long batchId)
进行 batch id 的确认。
|
boolean |
checkValid()
检查下链接是否合法
几种case下链接不合法:
1.
|
void |
connect()
链接对应的canal server
|
void |
disconnect()
释放链接
|
Message |
get(int batchSize)
获取数据,自动进行确认,该方法返回的条件:尝试拿batchSize条记录,有多少取多少,不会阻塞等待
|
Message |
get(int batchSize,
java.lang.Long timeout,
java.util.concurrent.TimeUnit unit)
获取数据,自动进行确认
该方法返回的条件:
a.
|
java.net.SocketAddress |
getAddress() |
int |
getIdleTimeout() |
java.net.SocketAddress |
getNextAddress() |
java.lang.String |
getPassword() |
int |
getSoTimeout() |
java.lang.String |
getUsername() |
Message |
getWithoutAck(int batchSize)
不指定 position 获取事件,该方法返回的条件: 尝试拿batchSize条记录,有多少取多少,不会阻塞等待
canal 会记住此 client 最新的position。 |
Message |
getWithoutAck(int batchSize,
java.lang.Long timeout,
java.util.concurrent.TimeUnit unit)
不指定 position 获取事件.
|
boolean |
isLazyParseEntry() |
void |
rollback()
回滚到未进行
CanalConnector.ack(long) 的地方,下次fetch的时候,可以从最后一个没有 CanalConnector.ack(long) 的地方开始拿 |
void |
rollback(long batchId)
回滚到未进行
CanalConnector.ack(long) 的地方,指定回滚具体的batchId |
void |
setFilter(java.lang.String filter) |
void |
setIdleTimeout(int idleTimeout) |
void |
setLazyParseEntry(boolean lazyParseEntry) |
void |
setRollbackOnConnect(boolean rollbackOnConnect) |
void |
setRollbackOnDisConnect(boolean rollbackOnDisConnect) |
void |
setSoTimeout(int soTimeout) |
void |
setZkClientx(com.alibaba.otter.canal.common.zookeeper.ZkClientx zkClientx) |
void |
stopRunning() |
void |
subscribe()
客户端订阅,不提交客户端filter,以服务端的filter为准
|
void |
subscribe(java.lang.String filter)
客户端订阅,重复订阅时会更新对应的filter信息
说明:
a.
|
void |
unsubscribe()
取消订阅
|
public SimpleCanalConnector(java.net.SocketAddress address,
java.lang.String username,
java.lang.String password,
java.lang.String destination)
public SimpleCanalConnector(java.net.SocketAddress address,
java.lang.String username,
java.lang.String password,
java.lang.String destination,
int soTimeout)
public SimpleCanalConnector(java.net.SocketAddress address,
java.lang.String username,
java.lang.String password,
java.lang.String destination,
int soTimeout,
int idleTimeout)
public void connect()
throws CanalClientException
CanalConnectorconnect 在接口中 CanalConnectorCanalClientExceptionpublic void disconnect()
throws CanalClientException
CanalConnectordisconnect 在接口中 CanalConnectorCanalClientExceptionpublic void subscribe()
throws CanalClientException
CanalConnectorsubscribe 在接口中 CanalConnectorCanalClientExceptionpublic void subscribe(java.lang.String filter)
throws CanalClientException
CanalConnector说明: a. 如果本次订阅中filter信息为空,则直接使用canal server服务端配置的filter信息 b. 如果本次订阅中filter信息不为空,目前会直接替换canal server服务端配置的filter信息,以本次提交的为准 TODO: 后续可以考虑,如果本次提交的filter不为空,在执行过滤时,是对canal server filter + 本次filter的交集处理,达到只取1份binlog数据,多个客户端消费不同的表
subscribe 在接口中 CanalConnectorCanalClientExceptionpublic void unsubscribe()
throws CanalClientException
CanalConnectorunsubscribe 在接口中 CanalConnectorCanalClientExceptionpublic Message get(int batchSize) throws CanalClientException
CanalConnectorget 在接口中 CanalConnectorCanalClientExceptionpublic Message get(int batchSize, java.lang.Long timeout, java.util.concurrent.TimeUnit unit) throws CanalClientException
CanalConnector该方法返回的条件: a. 拿够batchSize条记录或者超过timeout时间 b. 如果timeout=0,则阻塞至拿到batchSize记录才返回
get 在接口中 CanalConnectorCanalClientExceptionpublic Message getWithoutAck(int batchSize) throws CanalClientException
CanalConnectorgetWithoutAck 在接口中 CanalConnectorCanalClientExceptionpublic Message getWithoutAck(int batchSize, java.lang.Long timeout, java.util.concurrent.TimeUnit unit) throws CanalClientException
CanalConnector该方法返回的条件: a. 拿够batchSize条记录或者超过timeout时间 b. 如果timeout=0,则阻塞至拿到batchSize记录才返回canal 会记住此 client 最新的position。
getWithoutAck 在接口中 CanalConnectorCanalClientExceptionpublic void ack(long batchId)
throws CanalClientException
CanalConnectorack 在接口中 CanalConnectorCanalClientExceptionpublic void rollback(long batchId)
throws CanalClientException
CanalConnectorCanalConnector.ack(long) 的地方,指定回滚具体的batchIdrollback 在接口中 CanalConnectorCanalClientExceptionpublic void rollback()
throws CanalClientException
CanalConnectorCanalConnector.ack(long) 的地方,下次fetch的时候,可以从最后一个没有 CanalConnector.ack(long) 的地方开始拿rollback 在接口中 CanalConnectorCanalClientExceptionpublic boolean checkValid()
CanalConnector几种case下链接不合法: 1. 链接canal server失败,一直没有一个可用的链接,返回false 2. 当前客户端在进行running抢占的时候,做为备份节点存在,非处于工作节点,返回false 说明: a. 当前客户端一旦做为备份节点存在,当前所有的对CanalConnector的操作都会处于阻塞状态,直到转为工作节点 b. 所以业务方最好定时调用checkValid()方法用,比如调用CanalConnector所在线程的interrupt,直接退出CanalConnector,并根据自己的需要退出自己的资源
checkValid 在接口中 CanalConnectorpublic java.net.SocketAddress getNextAddress()
public java.net.SocketAddress getAddress()
public java.lang.String getUsername()
public java.lang.String getPassword()
public int getSoTimeout()
public void setSoTimeout(int soTimeout)
public int getIdleTimeout()
public void setIdleTimeout(int idleTimeout)
public void setZkClientx(com.alibaba.otter.canal.common.zookeeper.ZkClientx zkClientx)
public void setRollbackOnConnect(boolean rollbackOnConnect)
public void setRollbackOnDisConnect(boolean rollbackOnDisConnect)
public void setFilter(java.lang.String filter)
public boolean isLazyParseEntry()
public void setLazyParseEntry(boolean lazyParseEntry)
public void stopRunning()
Copyright © 2021. All rights reserved.