public class GroupEventSink extends EntryEventSink
几点设计说明: 1. 多库合并时,需要控制不满足groupSize的条件,就会阻塞其他库的合并操作. (比如刚启动时会所有通道正常工作才开始合并,或者中间过程出现主备切换) 2. 库解析出现问题,但没有进行主备切换,此时需要通过CanalEventDownStreamHandler进行定时监听合并数据的产生时间间隔 a. 因为一旦库解析异常,就不会再sink数据,此时groupSize就会一直缺少,就会阻塞其他库的合并,也就是不会有数据写入到store中
emptyTransactionInterval, emptyTransctionThresold, eventsSinkBlockingTime, filterEmtryTransactionEntry, filterTransactionEntry, lastEmptyTransactionCount, lastEmptyTransactionTimestamp, lastTransactionCount, lastTransactionTimestamp, rawfilter, handlersrunning| 构造器和说明 |
|---|
GroupEventSink() |
GroupEventSink(int groupSize) |
| 限定符和类型 | 方法和说明 |
|---|---|
protected boolean |
doSink(java.util.List<Event> events) |
void |
interrupt()
中断消费,比如解析模块发生了切换,想临时中断当前的merge请求,清理对应的上下文状态,可见GroupEventSink
|
void |
start() |
doFilter, filter, getEventsSinkBlockingTime, setEmptyTransactionInterval, setEmptyTransctionThresold, setEventStore, setFilterEmtryTransactionEntry, setFilterTransactionEntry, sink, stopaddHandler, addHandler, getFilter, getHandler, getHandlers, removeHandler, removeHandler, setFilterisStartclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitisStartpublic void start()
start 在接口中 CanalLifeCyclestart 在类中 EntryEventSinkprotected boolean doSink(java.util.List<Event> events)
doSink 在类中 EntryEventSinkpublic void interrupt()
CanalEventSinkinterrupt 在接口中 CanalEventSink<java.util.List<CanalEntry.Entry>>interrupt 在类中 AbstractCanalEventSink<java.util.List<CanalEntry.Entry>>Copyright © 2019. All rights reserved.