Canal監聽MySQL變化、將數據投遞RocketMQ,並使用Java客戶端消費MQ消息,部署、編碼過程筆記

前言:最近項目需要監聽MySQL數據變化,並將變化同步到ES中,自己搗鼓了下,利用了Canal、RocketMQ走通了流程,寫個筆記記錄下過程。

一、Mysql開啓bin log,Canal部署

參考Canal官方文檔 https://github.com/alibaba/canal/wiki/QuickStart

example/instance.properties 部分配置說明:

# table regex
canal.instance.filter.regex=a\.b,a\.c
# table black regex
canal.instance.filter.black.regex=

庫表過濾規則,分白名單和黑名單,上面的配置表示  關注a庫的b和c表的變化,默認爲關注所有的

二、RocketMQ安裝,Canal配置RocketMQ模式

參考RocketMQ官方文檔:https://rocketmq.apache.org/docs/quick-start/

RocketMQ Broker配置看這裏:https://blog.csdn.net/qq_32020035/article/details/81834903

Broker文件位置:conf/broker.conf

使用指定的文件啓動 Broker的命令爲  

nohup sh bin/mqbroker -c conf/broker.conf &

啓動完成後,在bin目錄下執行以下命令,檢查NameServer和Broker是否正常工作

sh mqadmin clusterList -n localhost:9876
#執行結果如下
#Cluster Name     #Broker Name            #BID  #Addr                  #Version                #InTPS(LOAD)       #OutTPS(LOAD) #PCWait(ms) #Hour #SPACE
DefaultCluster    broker-a                0     172.17.10.100:10911    V4_4_0                   0.00(0,0ms)         0.00(0,0ms)          0 435128.07 0.3271

配置Canal投遞消息到RocketMQ:https://github.com/alibaba/canal/wiki/Canal-Kafka-RocketMQ-QuickStart  

分別安裝 Kafka+ZooKeeper 或者 NameServer+RocketMQ,然後對Canal進行配置

整個過程記得隨時看日誌看是否存在報錯

三、Canal Java客戶端

還是參考官方文檔:https://github.com/alibaba/canal/wiki/ClientExample

補充說明:

// 創建鏈接
    CanalConnector connector = CanalConnectors.newSingleConnector(new InetSocketAddress(AddressUtils.getHostIp(),
                                                                                        11111), "example", "", "");

這裏需要填入 Canal Server的IP和端口號,從 conf/canal.properties 查看

這裏的  example  入參 和conf目錄下的相對應,即  如果還需要監聽其他的數據庫,則 在conf目錄下新建目錄 example1,裏面放入 instance.properties,配置對應的 數據庫用戶名和密碼,然後在客戶端 填入對應參數即可開啓監聽。

四、RocketMQ Java客戶端

還是看官方文檔:https://rocketmq.apache.org/docs/simple-example/

最後,操作下對應的數據庫,然後看消費者是否能收到消息即可。

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章