rocketmq| 使用 Dockerfile 安装配置 rocketMQ

本贴最后更新于 1608 天前,其中的信息可能已经事过境迁

javaDEMO

本网站记录了最全的各种 JavaDEMO ,保证下载,复制就是可用的,包括基础的, 集合的, spring 的, Mybatis 的等等各种,助力你从菜鸟到大牛,记得收藏哦~~
https://www.javastudy.cloud

RocketMQ 总述

RocketMQ 由阿里巴巴 2012 年开源,后捐赠给 Apache 软件基金会.主要有以下特点:
一.灵活的扩展性,RocketMQ 中的四大核心组件都天然支持集群
二.海量消息堆积能力,主要采用了零拷贝原理
三. 支持顺序消息,分为全局有序和局部有序
四.支持多种消息过滤方式
五.支持事务消息.对于分布式事务提供了一种思路

使用 docker 安装 rocketMq

参考文档:
http://rocketmq.apache.org/docs/quick-start/
这里 docker 没有官方镜像,需要我们自己基于 centos 封装镜像
这里使用的是 Dockfile
参考文档: https://docs.docker.com/v17.09/engine/reference/builder/

制作 mq-namesrv 基础镜像

Dockerfile 文件内容如下:

FROM centos:8
# 安装jdk 和 unzip
RUN yum install -y java-1.8.0-openjdk-headless.x86_64 unzip
# 下载rocketmq的包
ADD https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.5.2/rocketmq-all-4.5.2-bin-release.zip /opt/rocketmq/
# 声明工作路径
WORKDIR /opt/rocketmq/
# 解压
RUN unzip rocketmq-all-4.5.2-bin-release.zip
# 声明相关的端口
EXPOSE 9876
# 定义地址和端口号
ENV NAMESRV_ADDR=localhost:9876
# 运行namesrv
CMD rocketmq-all-4.5.2-bin-release/bin/mqnamesrv -n ${NAMESRV_ADDR}

然后 cmd 进入到 dockerfile 所在的目录,执行 docker build -t rocketmq-namesrv:0.1 . 注意最后有个点,如下图所示,等其运行完
image.png
运行完的截图如下:
image.png
然后用

docker run -d -e NAMESRV_ADDR=192.168.1.128:9876 -p 9876:9876 --name docker-rocketmq-namesrv rocketmq-namesrv:0.1

启动容器
这里要注意, 192.168.1.128 是我电脑的局域网 ip.

制作 mq-broke 基础镜像

broke 从官网下载的包里面对 jvm 设置参数过高,需要下载后调整下,将官方包下载下来之后,
官网下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/rocketmq/4.5.2/rocketmq-all-4.5.2-bin-release.zip
和 dockerfile 放在同一目录,如下图所示:
image.png
修改 bin/runbroker.sh 第 67 行

JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"
修改为. 此修改仅供学习和测试使用!! 切不可用于生产环境
JAVA_OPT="${JAVA_OPT} -server -Xms512m -Xmx512m -Xmn256m"

同时还要修改 conf/broker.conf 文件,如下图所示,添加一行,brokerIP1 为自己局域网 ip
image.png

Dockfile 内容如下:

FROM centos:8
# 安装jdk 和 unzip
RUN yum install -y java-1.8.0-openjdk-headless.x86_64 unzip
# 下载rocketmq的包
ADD rocketmq-all-4.5.2-bin-release /opt/rocketmq/rocketmq-all-4.5.2-bin-release/
# 声明工作路径
WORKDIR /opt/rocketmq/

# 声明相关的端口
EXPOSE 10909 10911 10912
# 定义环境变量
ENV NAMESRV_ADDR=localhost:9876
# 运行broker
CMD bin/mqbroker -n ${NAMESRV_ADDR} -c conf/broker.conf autoCreateTopicEnable=true

使用 docker build -t rocketmq-broke:0.1 . 去构建镜像
如下图所示:
image.png

启动容器,注意这里的 -e 要传上面的namesrv的地址
docker run -d -e NAMESRV_ADDR=192.168.1.128:9876 -p 10909:10909 -p 10911:10911 -p 10912:10912 --name docker-rocketmq-broke rocketmq-broke:0.1

然后用 docker ps 可看到如下
image.png
至此,Docker 安装 rocketmq 就 OVER 了.

DEMO 总评

rocketmq 没有提供官网的 docker 镜像,因此在 docker 中使用 mq 需要自己自定义去制作,而且受限于 docker 的内存,建议生产环境还是直接装 rocketmq, 如真要在 docker 中使用,broker 还需要挂载持久化目录.加油吧,少年!

  • RocketMQ
    22 引用 • 10 回帖
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    476 引用 • 899 回帖
  • 分布式
    78 引用 • 149 回帖 • 4 关注
  • 消息
    5 引用 • 23 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...