canal adapter遠端配置方式

2021-10-09 11:26:40 字數 3338 閱讀 6606

canal版本:1.1.4

配置方式:基於canal-admin的ha模式

1、修改bootstrap.yml

canal:

manager:

jdbc:

url: jdbc:mysql:

username: root

password: 123456

3、啟動介面卡即可

public class bootstrapconfiguration 

}@predestroy

public synchronized void destroy()

}}

/**

*/@override

public void loadremoteconfig()

}} catch (exception e)

}

此方法將觸發檔案更改事件

/**

** @param content 檔案內容

*/private void overridelocalcanalconfig(string content) catch (exception e)

}

檔案更改事件如下:

@override

public void onfilechange(file file) catch (interruptedexception e)

canaladapterservice.init();

} catch (exception e)

}

修改 com.alibaba.otter.canal.adapter.launcher.config.bootstrapconfiguration 類,改為如下:

public class bootstrapconfiguration }}

@predestroy

public synchronized void destroy()

}}

com.alibaba.otter.canal.client.adapter.rdb.rdbadapter

/**

* 初始化方法

** @param configuration 外部介面卡配置資訊

*/@override

public void init(outeradapterconfig configuration, properties envproperties)

});throw new runtimeexception("no rdb adapter found for config key: " + configuration.getkey());

}string configname = entry.getkey();

string key;

if (envproperties != null && !"tcp".equalsignorecase(envproperties.getproperty("canal.conf.mode"))) else

k1 -> new concurrenthashmap<>());

} else

}// 以下省略若干不關注的**

}

com.alibaba.otter.canal.client.adapter.rdb.rdbadapter

/**

* 同步方法

** @param dmls 資料報

*/@override

public void sync(listdmls)

try catch (exception e)

}

com.alibaba.otter.canal.client.adapter.rdb.service.rdbsyncservice

sync(dmls, dml -> else else

if (configmap == null)

if (configmap.values().isempty())

if (config.getconcurrent()) );

} else );}}

return true;

}});

}com.alibaba.otter.canal.client.adapter.rdb.monitor.rdbconfigmonitor

@override

public void onfilechange(file file)

if (config == null)

config.validate();

if ((key == null && config.getouteradapterkey() == null)

|| (key != null && key.equals(config.getouteradapterkey())))

addconfigtocache(file, config);// 重點是此方法

} else

}} catch (exception e)

}

com.alibaba.otter.canal.client.adapter.rdb.monitor.rdbconfigmonitor

return;

}// 坑就在這裡,此處生成鍵的規則直接預設為tcp模式了,如果使用的是mq模式,就會導致生成乙個新鍵(rdbsyncservice中匹配不上)存入配置資訊,而原來的鍵的值已經在deleteconfigfromcache方法中刪除了

k1 -> new hashmap<>());

} else }

修改com.alibaba.otter.canal.client.adapter.rdb.monitor.rdbconfigmonitor中的addconfigtocache方法如下:

return;

}string key;

if (envproperties != null && !"tcp".equalsignorecase(envproperties.getproperty("canal.conf.mode"))) else

.computeifabsent(key, k1 -> new hashmap<>());

} else

}

Spring Cloud Config 遠端配置

前面的課程我們學習了本地 config server 的搭建方式,本節課我們一起學習遠端 config server 的環境搭建,即將各個微服務的配置檔案放置在遠端 git 倉庫中,通過 config server 進行統一管理,本課程中我們使用基於 git 的第三方 託管遠端倉庫 github 作...

jupyter notebook 遠端訪問配置

首先是要安裝 anaconda 預設情況下,安裝好 anaconda 後開啟 jupyter notebook,訪問本地localhost 8888即可。但是如果要訪問另一台機器,比如遠端伺服器上的 notebook,即預設是不支援 172.104.105.119 8888 這樣的訪問,需要額外配置...

anaconda jupyter遠端訪問配置

1 開啟控制台 2 執行命令 jupyter notebook generate config 此時會生成乙個檔案c users administrator jupyter jupyter notebook config.py 3 執行ipython 輸入in 1 from notebook.aut...