前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用 Docker 部署 canal,并将消息推送到 RabbitMQ

使用 Docker 部署 canal,并将消息推送到 RabbitMQ

原创
作者头像
AlwaysBeta
修改2020-12-21 11:23:16
1.4K0
修改2020-12-21 11:23:16
举报
文章被收录于专栏:AlwaysBetaAlwaysBetaAlwaysBeta

上一篇已经介绍了使用 Docker 部署 canal 服务,实现 MySQL 数据库 binlog 日志解析,并且用官方提供的客户端程序成功读到了消息。但在生产环境下还不能这么用,更好的做法是将消息发送到消息队列,然后再从消息队列消费。

这里我选择的是 RabbitMQ。

原来看官方文档发现只支持 Kafka 和 RocketMQ,但好在最新版 1.1.5 也支持了 RabbitMQ,而且镜像也已经打好了。

如果使用 Docker 部署的话,直接拉取最新的镜像即可。

配置 canal

第一步拉取镜像:

# docker pull canal/canal-server:latest

然后启动容器,从容器中拷贝出配置文件:

# docker cp canal-server:/home/admin/canal-server/conf/canal.properties ./
# docker cp canal-server:/home/admin/canal-server/conf/test/instance.properties ./

修改 canal.properties 文件,配置输出到 RabbitMQ,有以下几处要改:

# 指定 RabbitMQ
canal.serverMode = rabbitMQ

# RabbitMQ 配置
rabbitmq.host = 127.0.0.1
rabbitmq.virtual.host = /
rabbitmq.exchange = exchange.canal
rabbitmq.username = xxxx
rabbitmq.password = xxxx

这里有两点需要说明,一是我在网上找的很多文章,关于 RabbitMQ 的配置都是这样的:

canal.mq.servers = xxx
canal.mq.vhost = /
canal.mq.exchange = exchange.canal
canal.mq.username = admin
canal.mq.password = admin

但是我这样配置并不成功,也可能是版本的问题,我没有更多去验证。

第二个是目前 RabbitMQ 的配置还不支持端口,只能使用默认端口 5672。

接下来修改 instance.properties 文件:

# MySQL 地址 + 端口
canal.instance.master.address=host:port
canal.instance.dbUsername=xxxx
canal.instance.dbPassword=xxxx
# 对应到 RabbitMQ 的话是 Routing key
canal.mq.topic=canal-routing-key

docker-compose 文件:

version: '3'

services:
  canal-server:
    image: canal/canal-server
    container_name: canal-server
    restart: unless-stopped
    network_mode: host
    ports: 
      - 11111:11111
    volumes:
      - ./canal.properties:/home/admin/canal-server/conf/canal.properties
      - ./instance.properties:/home/admin/canal-server/conf/test/instance.properties
      - ./log/:/home/admin/canal-server/logs/

一切就绪,启动服务:

# docker-compose up -d

配置 RabbitMQ

首先新建 exchange:

然后新建队列:

最后绑定队列:

这里要注意,Routing key 一定要和之前配置的一致。

到这里,如果顺利的话队列里就应该有消息了。

参考文档:

https://www.siques.cn/doc/340

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置 canal
  • 配置 RabbitMQ
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档