mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
rename log manager module and ajust xml
This commit is contained in:
@@ -128,14 +128,14 @@
|
|||||||
<!-- 解析位点记录 -->
|
<!-- 解析位点记录 -->
|
||||||
<property name="logPositionManager">
|
<property name="logPositionManager">
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.FailbackLogPositionManager">
|
<bean class="com.alibaba.otter.canal.parse.index.FailbackLogPositionManager">
|
||||||
<property name="primary">
|
<constructor-arg>
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.MemoryLogPositionManager" />
|
<bean class="com.alibaba.otter.canal.parse.index.MemoryLogPositionManager" />
|
||||||
</property>
|
</constructor-arg>
|
||||||
<property name="failback">
|
<constructor-arg>
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.MetaLogPositionManager">
|
<bean class="com.alibaba.otter.canal.parse.index.MetaLogPositionManager">
|
||||||
<property name="metaManager" ref="metaManager" />
|
<constructor-arg ref="metaManager"/>
|
||||||
</bean>
|
</bean>
|
||||||
</property>
|
</constructor-arg>
|
||||||
</bean>
|
</bean>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
|||||||
@@ -113,14 +113,14 @@
|
|||||||
<!-- 解析位点记录 -->
|
<!-- 解析位点记录 -->
|
||||||
<property name="logPositionManager">
|
<property name="logPositionManager">
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.FailbackLogPositionManager">
|
<bean class="com.alibaba.otter.canal.parse.index.FailbackLogPositionManager">
|
||||||
<property name="primary">
|
<constructor-arg>
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.MemoryLogPositionManager" />
|
<bean class="com.alibaba.otter.canal.parse.index.MemoryLogPositionManager" />
|
||||||
</property>
|
</constructor-arg>
|
||||||
<property name="failback">
|
<constructor-arg>
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.MetaLogPositionManager">
|
<bean class="com.alibaba.otter.canal.parse.index.MetaLogPositionManager">
|
||||||
<property name="metaManager" ref="metaManager" />
|
<constructor-arg ref="metaManager"/>
|
||||||
</bean>
|
</bean>
|
||||||
</property>
|
</constructor-arg>
|
||||||
</bean>
|
</bean>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
|||||||
@@ -123,14 +123,14 @@
|
|||||||
<!-- 解析位点记录 -->
|
<!-- 解析位点记录 -->
|
||||||
<property name="logPositionManager">
|
<property name="logPositionManager">
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.FailbackLogPositionManager">
|
<bean class="com.alibaba.otter.canal.parse.index.FailbackLogPositionManager">
|
||||||
<property name="primary">
|
<constructor-arg>
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.MemoryLogPositionManager" />
|
<bean class="com.alibaba.otter.canal.parse.index.MemoryLogPositionManager" />
|
||||||
</property>
|
</constructor-arg>
|
||||||
<property name="failback">
|
<constructor-arg>
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.MetaLogPositionManager">
|
<bean class="com.alibaba.otter.canal.parse.index.MetaLogPositionManager">
|
||||||
<property name="metaManager" ref="metaManager" />
|
<constructor-arg ref="metaManager"/>
|
||||||
</bean>
|
</bean>
|
||||||
</property>
|
</constructor-arg>
|
||||||
</bean>
|
</bean>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.alibaba.otter.canal.instance.core;
|
|||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import com.alibaba.otter.canal.parse.index.LogPositionManager;
|
import com.alibaba.otter.canal.parse.index.CanalLogPositionManager;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -171,7 +171,7 @@ public class AbstractCanalInstance extends AbstractCanalLifeCycle implements Can
|
|||||||
if (eventParser instanceof AbstractEventParser) {
|
if (eventParser instanceof AbstractEventParser) {
|
||||||
AbstractEventParser abstractEventParser = (AbstractEventParser) eventParser;
|
AbstractEventParser abstractEventParser = (AbstractEventParser) eventParser;
|
||||||
// 首先启动log position管理器
|
// 首先启动log position管理器
|
||||||
LogPositionManager logPositionManager = abstractEventParser.getLogPositionManager();
|
CanalLogPositionManager logPositionManager = abstractEventParser.getLogPositionManager();
|
||||||
if (!logPositionManager.isStart()) {
|
if (!logPositionManager.isStart()) {
|
||||||
logPositionManager.start();
|
logPositionManager.start();
|
||||||
}
|
}
|
||||||
@@ -196,7 +196,7 @@ public class AbstractCanalInstance extends AbstractCanalLifeCycle implements Can
|
|||||||
if (eventParser instanceof AbstractEventParser) {
|
if (eventParser instanceof AbstractEventParser) {
|
||||||
AbstractEventParser abstractEventParser = (AbstractEventParser) eventParser;
|
AbstractEventParser abstractEventParser = (AbstractEventParser) eventParser;
|
||||||
// 首先启动log position管理器
|
// 首先启动log position管理器
|
||||||
LogPositionManager logPositionManager = abstractEventParser.getLogPositionManager();
|
CanalLogPositionManager logPositionManager = abstractEventParser.getLogPositionManager();
|
||||||
if (logPositionManager.isStart()) {
|
if (logPositionManager.isStart()) {
|
||||||
logPositionManager.stop();
|
logPositionManager.stop();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -338,10 +338,10 @@ public class CanalInstanceWithManager extends AbstractCanalInstance {
|
|||||||
return haController;
|
return haController;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected LogPositionManager initLogPositionManager() {
|
protected CanalLogPositionManager initLogPositionManager() {
|
||||||
logger.info("init logPositionPersistManager begin...");
|
logger.info("init logPositionPersistManager begin...");
|
||||||
IndexMode indexMode = parameters.getIndexMode();
|
IndexMode indexMode = parameters.getIndexMode();
|
||||||
LogPositionManager logPositionManager;
|
CanalLogPositionManager logPositionManager;
|
||||||
if (indexMode.isMemory()) {
|
if (indexMode.isMemory()) {
|
||||||
logPositionManager = new MemoryLogPositionManager();
|
logPositionManager = new MemoryLogPositionManager();
|
||||||
} else if (indexMode.isZookeeper()) {
|
} else if (indexMode.isZookeeper()) {
|
||||||
@@ -356,7 +356,7 @@ public class CanalInstanceWithManager extends AbstractCanalInstance {
|
|||||||
MemoryLogPositionManager primary = new MemoryLogPositionManager();
|
MemoryLogPositionManager primary = new MemoryLogPositionManager();
|
||||||
MetaLogPositionManager secondary = new MetaLogPositionManager(metaManager);
|
MetaLogPositionManager secondary = new MetaLogPositionManager(metaManager);
|
||||||
|
|
||||||
logPositionManager = new FailoverLogPositionManager(primary, secondary);
|
logPositionManager = new FailbackLogPositionManager(primary, secondary);
|
||||||
} else {
|
} else {
|
||||||
throw new CanalException("unsupport indexMode for " + indexMode);
|
throw new CanalException("unsupport indexMode for " + indexMode);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,14 +120,14 @@
|
|||||||
<!-- 解析位点记录 -->
|
<!-- 解析位点记录 -->
|
||||||
<property name="logPositionManager">
|
<property name="logPositionManager">
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.FailbackLogPositionManager">
|
<bean class="com.alibaba.otter.canal.parse.index.FailbackLogPositionManager">
|
||||||
<property name="primary">
|
<constructor-arg>
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.MemoryLogPositionManager" />
|
<bean class="com.alibaba.otter.canal.parse.index.MemoryLogPositionManager" />
|
||||||
</property>
|
</constructor-arg>
|
||||||
<property name="failback">
|
<constructor-arg>
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.MetaLogPositionManager">
|
<bean class="com.alibaba.otter.canal.parse.index.MetaLogPositionManager">
|
||||||
<property name="metaManager" ref="metaManager" />
|
<constructor-arg ref="metaManager"/>
|
||||||
</bean>
|
</bean>
|
||||||
</property>
|
</constructor-arg>
|
||||||
</bean>
|
</bean>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
|||||||
@@ -102,18 +102,20 @@
|
|||||||
<!-- 解析编码 -->
|
<!-- 解析编码 -->
|
||||||
<!-- property name="connectionCharsetNumber" value="${canal.instance.connectionCharsetNumber:33}" /-->
|
<!-- property name="connectionCharsetNumber" value="${canal.instance.connectionCharsetNumber:33}" /-->
|
||||||
<property name="connectionCharset" value="${canal.instance.connectionCharset:UTF-8}" />
|
<property name="connectionCharset" value="${canal.instance.connectionCharset:UTF-8}" />
|
||||||
|
|
||||||
<!-- 解析位点记录 -->
|
<!-- 解析位点记录 -->
|
||||||
<property name="logPositionManager">
|
<property name="logPositionManager">
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.FailbackLogPositionManager">
|
<bean class="com.alibaba.otter.canal.parse.index.FailbackLogPositionManager">
|
||||||
<property name="primary">
|
<constructor-arg>
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.MemoryLogPositionManager" />
|
<bean class="com.alibaba.otter.canal.parse.index.MemoryLogPositionManager" />
|
||||||
</property>
|
</constructor-arg>
|
||||||
<property name="failback">
|
<constructor-arg>
|
||||||
<bean class="com.alibaba.otter.canal.parse.index.MetaLogPositionManager">
|
<bean class="com.alibaba.otter.canal.parse.index.MetaLogPositionManager">
|
||||||
<property name="metaManager" ref="metaManager" />
|
<constructor-arg>
|
||||||
|
<ref bean="metaManager"/>
|
||||||
|
</constructor-arg>
|
||||||
</bean>
|
</bean>
|
||||||
</property>
|
</constructor-arg>
|
||||||
</bean>
|
</bean>
|
||||||
</property>
|
</property>
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import java.util.TimerTask;
|
|||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
import java.util.concurrent.atomic.AtomicLong;
|
import java.util.concurrent.atomic.AtomicLong;
|
||||||
|
|
||||||
import com.alibaba.otter.canal.parse.index.LogPositionManager;
|
import com.alibaba.otter.canal.parse.index.CanalLogPositionManager;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.commons.lang.exception.ExceptionUtils;
|
import org.apache.commons.lang.exception.ExceptionUtils;
|
||||||
import org.apache.commons.lang.math.RandomUtils;
|
import org.apache.commons.lang.math.RandomUtils;
|
||||||
@@ -44,7 +44,7 @@ public abstract class AbstractEventParser<EVENT> extends AbstractCanalLifeCycle
|
|||||||
|
|
||||||
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
|
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||||
|
|
||||||
protected LogPositionManager logPositionManager = null;
|
protected CanalLogPositionManager logPositionManager = null;
|
||||||
protected CanalEventSink<List<CanalEntry.Entry>> eventSink = null;
|
protected CanalEventSink<List<CanalEntry.Entry>> eventSink = null;
|
||||||
protected CanalEventFilter eventFilter = null;
|
protected CanalEventFilter eventFilter = null;
|
||||||
protected CanalEventFilter eventBlackFilter = null;
|
protected CanalEventFilter eventBlackFilter = null;
|
||||||
@@ -495,7 +495,7 @@ public abstract class AbstractEventParser<EVENT> extends AbstractCanalLifeCycle
|
|||||||
return this.alarmHandler;
|
return this.alarmHandler;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLogPositionManager(LogPositionManager logPositionManager) {
|
public void setLogPositionManager(CanalLogPositionManager logPositionManager) {
|
||||||
this.logPositionManager = logPositionManager;
|
this.logPositionManager = logPositionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -503,7 +503,7 @@ public abstract class AbstractEventParser<EVENT> extends AbstractCanalLifeCycle
|
|||||||
this.transactionSize = transactionSize;
|
this.transactionSize = transactionSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
public LogPositionManager getLogPositionManager() {
|
public CanalLogPositionManager getLogPositionManager() {
|
||||||
return logPositionManager;
|
return logPositionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package com.alibaba.otter.canal.parse.inbound.mysql;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
import com.alibaba.otter.canal.parse.index.LogPositionManager;
|
import com.alibaba.otter.canal.parse.index.CanalLogPositionManager;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
|
||||||
import com.alibaba.otter.canal.parse.CanalEventParser;
|
import com.alibaba.otter.canal.parse.CanalEventParser;
|
||||||
@@ -150,7 +150,7 @@ public class LocalBinlogEventParser extends AbstractMysqlEventParser implements
|
|||||||
|
|
||||||
// ========================= setter / getter =========================
|
// ========================= setter / getter =========================
|
||||||
|
|
||||||
public void setLogPositionManager(LogPositionManager logPositionManager) {
|
public void setLogPositionManager(CanalLogPositionManager logPositionManager) {
|
||||||
this.logPositionManager = logPositionManager;
|
this.logPositionManager = logPositionManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,5 +6,5 @@ import com.alibaba.otter.canal.common.AbstractCanalLifeCycle;
|
|||||||
* Created by yinxiu on 17/3/17.
|
* Created by yinxiu on 17/3/17.
|
||||||
* Email: marklin.hz@gmail.com
|
* Email: marklin.hz@gmail.com
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractLogPositionManager extends AbstractCanalLifeCycle implements LogPositionManager {
|
public abstract class AbstractLogPositionManager extends AbstractCanalLifeCycle implements CanalLogPositionManager {
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import com.alibaba.otter.canal.protocol.position.LogPosition;
|
|||||||
* Created by yinxiu on 17/3/17.
|
* Created by yinxiu on 17/3/17.
|
||||||
* Email: marklin.hz@gmail.com
|
* Email: marklin.hz@gmail.com
|
||||||
*/
|
*/
|
||||||
public interface LogPositionManager extends CanalLifeCycle {
|
public interface CanalLogPositionManager extends CanalLifeCycle {
|
||||||
|
|
||||||
LogPosition getLatestIndexBy(String destination);
|
LogPosition getLatestIndexBy(String destination);
|
||||||
|
|
||||||
@@ -15,14 +15,14 @@ import org.slf4j.LoggerFactory;
|
|||||||
* 应用场景:比如针对内存buffer,出现HA切换,先尝试从内存buffer区中找到lastest position,如果不存在才尝试找一下meta里消费的信息
|
* 应用场景:比如针对内存buffer,出现HA切换,先尝试从内存buffer区中找到lastest position,如果不存在才尝试找一下meta里消费的信息
|
||||||
* </pre>
|
* </pre>
|
||||||
*/
|
*/
|
||||||
public class FailoverLogPositionManager extends AbstractLogPositionManager {
|
public class FailbackLogPositionManager extends AbstractLogPositionManager {
|
||||||
|
|
||||||
private final static Logger logger = LoggerFactory.getLogger(FailoverLogPositionManager.class);
|
private final static Logger logger = LoggerFactory.getLogger(FailbackLogPositionManager.class);
|
||||||
|
|
||||||
private final LogPositionManager primary;
|
private final CanalLogPositionManager primary;
|
||||||
private final LogPositionManager secondary;
|
private final CanalLogPositionManager secondary;
|
||||||
|
|
||||||
public FailoverLogPositionManager(LogPositionManager primary, LogPositionManager secondary) {
|
public FailbackLogPositionManager(CanalLogPositionManager primary, CanalLogPositionManager secondary) {
|
||||||
if (primary == null) {
|
if (primary == null) {
|
||||||
throw new NullPointerException("nul primary LogPositionManager");
|
throw new NullPointerException("nul primary LogPositionManager");
|
||||||
}
|
}
|
||||||
@@ -26,17 +26,15 @@ public class FileMixedLogPositionManagerTest extends AbstractLogPositionManagerT
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAll() {
|
public void testAll() {
|
||||||
FileMixedLogPositionManager logPositionManager = new FileMixedLogPositionManager();
|
MemoryLogPositionManager memoryLogPositionManager = new MemoryLogPositionManager();
|
||||||
logPositionManager.setDataDir(dataDir);
|
|
||||||
logPositionManager.setPeriod(100);
|
FileMixedLogPositionManager logPositionManager = new FileMixedLogPositionManager(dataDir, 1000, memoryLogPositionManager);
|
||||||
logPositionManager.start();
|
logPositionManager.start();
|
||||||
|
|
||||||
LogPosition position2 = doTest(logPositionManager);
|
LogPosition position2 = doTest(logPositionManager);
|
||||||
sleep(1500);
|
sleep(1500);
|
||||||
|
|
||||||
FileMixedLogPositionManager logPositionManager2 = new FileMixedLogPositionManager();
|
FileMixedLogPositionManager logPositionManager2 = new FileMixedLogPositionManager(dataDir, 1000, memoryLogPositionManager);
|
||||||
logPositionManager2.setDataDir(dataDir);
|
|
||||||
logPositionManager2.setPeriod(100);
|
|
||||||
logPositionManager2.start();
|
logPositionManager2.start();
|
||||||
|
|
||||||
LogPosition getPosition2 = logPositionManager2.getLatestIndexBy(destination);
|
LogPosition getPosition2 = logPositionManager2.getLatestIndexBy(destination);
|
||||||
|
|||||||
Reference in New Issue
Block a user