上一篇已经介绍了使用 Docker 部署 canal 服务,实现 MySQL 数据库 binlog 日志解析,并且用官方提供的客户端程序成功读到了消息。但在生产环境下还不能这么用,更好的做法是将消息发送到消息队列,然后再从消息队列消费。
这里我选择的是 RabbitMQ。
原来看官方文档发现只支持 Kafka 和 RocketMQ,但好在最新版 1.1.5 也支持了 RabbitMQ,而且镜像也已经打好了。
如果使用 Docker 部署的话,直接拉取最新的镜像即可。
配置 canal
第一步拉取镜像:
然后启动容器,从容器中拷贝出配置文件:
修改 文件,配置输出到 RabbitMQ,有以下几处要改:
这里有两点需要说明,一是我在网上找的很多文章,关于 RabbitMQ 的配置都是这样的:
但是我这样配置并不成功,也可能是版本的问题,我没有更多去验证。
第二个是目前 RabbitMQ 的配置还不支持端口,只能使用默认端口 5672。
接下来修改 文件:
docker-compose 文件:
一切就绪,启动服务:
配置 RabbitMQ
首先新建 exchange:
然后新建队列:
最后绑定队列:
这里要注意,Routing key 一定要和之前配置的一致。
到这里,如果顺利的话队列里就应该有消息了。
题图:该图片由 Gundula Vogel 在 Pixabay 上发布。
参考文档:
https://www.siques.cn/doc/340
领取专属 10元无门槛券
私享最新 技术干货