mirror of
https://github.com/alibaba/canal.git
synced 2026-11-04 00:30:15 +08:00
canal server端 MQ 配置修改
MQ配置可动态加载
This commit is contained in:
@@ -38,6 +38,9 @@ public class AbstractCanalInstance extends AbstractCanalLifeCycle implements Can
|
||||
protected CanalEventSink<List<CanalEntry.Entry>> eventSink; // 链接parse和store的桥接器
|
||||
protected CanalMetaManager metaManager; // 消费信息管理器
|
||||
protected CanalAlarmHandler alarmHandler; // alarm报警机制
|
||||
protected CanalMQConfig mqConfig; // mq的配置
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public boolean subscribeChange(ClientIdentity identity) {
|
||||
@@ -241,4 +244,9 @@ public class AbstractCanalInstance extends AbstractCanalLifeCycle implements Can
|
||||
public CanalAlarmHandler getAlarmHandler() {
|
||||
return alarmHandler;
|
||||
}
|
||||
|
||||
@Override
|
||||
public CanalMQConfig getMqConfig() {
|
||||
return mqConfig;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,4 +32,6 @@ public interface CanalInstance extends CanalLifeCycle {
|
||||
* 客户端发生订阅/取消订阅行为
|
||||
*/
|
||||
boolean subscribeChange(ClientIdentity identity);
|
||||
|
||||
CanalMQConfig getMqConfig();
|
||||
}
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.alibaba.otter.canal.instance.core;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class CanalMQConfig {
|
||||
|
||||
private String topic;
|
||||
private Integer partition;
|
||||
private Integer partitionsNum;
|
||||
private String partitionHash;
|
||||
|
||||
private volatile Map<String, String> partitionHashProperties;
|
||||
|
||||
public String getTopic() {
|
||||
return topic;
|
||||
}
|
||||
|
||||
public void setTopic(String topic) {
|
||||
this.topic = topic;
|
||||
}
|
||||
|
||||
public Integer getPartition() {
|
||||
return partition;
|
||||
}
|
||||
|
||||
public void setPartition(Integer partition) {
|
||||
this.partition = partition;
|
||||
}
|
||||
|
||||
public Integer getPartitionsNum() {
|
||||
return partitionsNum;
|
||||
}
|
||||
|
||||
public void setPartitionsNum(Integer partitionsNum) {
|
||||
this.partitionsNum = partitionsNum;
|
||||
}
|
||||
|
||||
public String getPartitionHash() {
|
||||
return partitionHash;
|
||||
}
|
||||
|
||||
public void setPartitionHash(String partitionHash) {
|
||||
this.partitionHash = partitionHash;
|
||||
}
|
||||
|
||||
public Map<String, String> getPartitionHashProperties() {
|
||||
if (partitionHashProperties == null) {
|
||||
synchronized (CanalMQConfig.class) {
|
||||
if (partitionHashProperties == null) {
|
||||
if (partitionHash != null) {
|
||||
partitionHashProperties = new LinkedHashMap<>();
|
||||
String[] items = partitionHash.split(",");
|
||||
for (String item : items) {
|
||||
int i = item.indexOf(":");
|
||||
if (i > -1) {
|
||||
String dbTable = item.substring(0, i).trim();
|
||||
String pk = item.substring(i + 1).trim();
|
||||
partitionHashProperties.put(dbTable, pk);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return partitionHashProperties;
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,8 @@ package com.alibaba.otter.canal.instance.spring;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.alibaba.otter.canal.instance.core.CanalInstance;
|
||||
import com.alibaba.otter.canal.instance.core.CanalMQConfig;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@@ -56,4 +58,8 @@ public class CanalInstanceWithSpring extends AbstractCanalInstance {
|
||||
this.alarmHandler = alarmHandler;
|
||||
}
|
||||
|
||||
public void setMqConfig(CanalMQConfig mqConfig){
|
||||
this.mqConfig = mqConfig;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user