Docker 下 RabbitMQ 四部曲之一:极速体验 (单机和集群)
欢迎访问我的 GitHub
这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos
从本章开始,我们一起在 Docker 环境实战 RabbitMQ 环境部署和对应的 Java 开发,当前是《Docker 下 RabbitMQ 四部曲》系列的第一篇,整个系列由以下四篇文章组成:
第一篇,即本章,我们用最快的方式体验 RabbitMQ 单机环境下生产和消费消息,然后再体验 RabbitMQ 集群环境下生产和消费消息;
第二篇,详细说明如何制作 RabbitMQ 的 docker 镜像文件,这个镜像支持集群,也能通过参数来配置内存节点、高可用等特性;
第三篇,开发基于 SpringBoot 的 web 应用,实现生产和消息 RabbitMQ 消息的功能;
第四篇,实战高可用,集群环境中有 RabbitMQ 宕机,验证此时消息的生产和消费是否正常;
环境信息
本次实战的环境信息如下:
操作系统:Ubuntu 16.04.3 LTS
docker 版本:17.03.2-ce, build f5ec1e2
docker-compose 版本:1.18.0, build 8dd22a9
RabbitMQ 版本:3.7.5-rc.1
RabbitMQ 环境的 Erlang 版本:19.3.6.5
本章概要
本章的实战步骤简述如下:
部署单机版 RabbitMQ、生产消息的 web 应用、消费消息的 web 应用;
检查 RabbitMQ 的基本情况、生产和消费消息;
部署集群版 RabbitMQ、生产消息的 web 应用、消费消息的 web 应用;
检查 RabbitMQ 的基本情况、生产和消费消息;
部署单机版 RabbitMQ
创建 docker-compose.yml 文件,内容如下:
在 docker-compose.yml 文件所在目录执行命令 docker-compose up -d,即可下载镜像并创建容器,下载过程比较耗时请耐心等待,容器一共三个:RabbitMQ、消息生产者、消息消费者;
容器创建成功后,网络架构如下图所示:
为了方便后续体验,将三个容器信息列表如下:
体验单机版 RabbitMQ
单机版的 RabbitMQ 环境已经部署完毕,接下来我们来体验一番:
假设运行 docker 的电脑 IP 地址为 192.168.119.155;
在浏览器输入 http://192.168.119.155:18080/send/aaa/bbb,这个请求会使 single_producer_1 容器向 RabbitMQ 发送消息,如下图:
在 docker 机器上输入命令 docker logs -f single_consumer_1,可以看到容器的日志,如下所示,receive message : hello, aaa, bbb 就是容器从 RabbitMQ 收到的消息:
在浏览器访问 http://192.168.119.155:15672,会打开 RabbitMQ 的管理页面,需要登录,如下图,输入用户名 admin,密码 888888:
登录成功后,点击“Connections”的 Tab 页,如下图,目前 single_producer_1 和 single_consumer_1 容器都连接到了 RabbitMQ:
如下图红框所示,在“Exchanges”的 Tab 页,可以看到一个 fanout 型的交换机,名为 bolingcavalryFanoutExchange:
如下图红框所示,在“Queues”的 Tab 页,可以看到一个队列,名为 consumer.queue:
至此,单机版的 RabbitMQ 我们就体验完毕了,接下来开始体验集群版的 RabbitMQ;
清空单机版 RabbitMQ 的所有容器
在刚才创建的 docker-compose.yml 文件所在目录下执行命令 docker-compose down,即可将刚才创建的三个容器彻底清除,如下所示:
部署集群版 RabbitMQ
创建集群版对应的 docker-compose.yml 文件,内容如下:
在 docker-compose.yml 文件所在目录执行命令 docker-compose up -d,即可创建容器,容器一共六个:三个 RabbitMQ、一个消息生产者、两个消息消费者;
容器创建成功后,网络架构如下图所示:
为了方便后续体验,将三个容器信息列表如下:
体验集群版 RabbitMQ
集群版的 RabbitMQ 环境已经部署完毕,我们来体验一番:
假设运行 docker 的电脑 IP 地址为 192.168.119.155;
在浏览器输入 http://192.168.119.155:18080/send/aaa/bbb,这个请求会使 single_producer_1 容器向 RabbitMQ 发送消息,如下图:
在 docker 机器上输入命令 docker logs -f cluster_consumer1_1,可以看到容器 cluster_consumer1_1 的日志,如下所示,receive message : hello, aaa, bbb 就是容器从 RabbitMQ 收到的消息:
接下来看另一个消费消息的容器,在 docker 机器上输入命令 docker logs -f cluster_consumer2_1,可以看到容器 cluster_consumer2_1 的日志,如下所示,也受到一条消息,这证明 fanout 模式的交换机中的消息已成功被两个消费者消费:
在浏览器访问 http://192.168.119.155:15672,会打开 RabbitMQ 的管理页面,需要登录,如下图,输入用户名 admin,密码 888888:
登录成功后,在“Overview”的 Tab 页,如下图红框所示,可见有三个 RabbitMQ server,注意绿框中的信息,一号和三号 RabbitMQ 都是磁盘型,二号 RabbitMQ 是内存型的:
点击“Connections”的 Tab 页,如下图,所有生产者和消费者容器都连接到了 RabbitMQ:
上图中表格表明了以下连接关系:生产者连接一号 RabbitMQ、一号消费者连接二号 RabbitMQ、二号消费者连接三号 RabbitMQ;
如下图红框所示,在“Exchanges”的 Tab 页,可以看到一个 fanout 型的交换机,名为 bolingcavalryFanoutExchange:
如下图红框所示,在“Queues”的 Tab 页,可以看到两个队列,分别存在于二号 RabbitMQ 和三号 RabbitMQ:
至此,集群版的 RabbitMQ 我们就体验完毕了,本章旨在让读者您用最少的操作来完成整个体验过程,接下来的文章中,我们会一起实战这些简单操作背后的技术细节;
欢迎关注 InfoQ:程序员欣宸
版权声明: 本文为 InfoQ 作者【程序员欣宸】的原创文章。
原文链接:【http://xie.infoq.cn/article/009e85ed5c5f859ba33d0da07】。文章转载请联系作者。
评论