rocketmq 部署启动指南-Docker 版
最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑。
准备工作
在搭建之前,我们需要做一些准备工作,这里我们需要使用 docker 搭建服务,所以需要提前安装 docker。此外,由于 rocketmq 需要部署 broker 与 nameserver ,考虑到分开部署比较麻烦,这里将会使用 docker-compose。
rocketmq 架构图如下:
另外,还需要搭建一个 web 可视化控制台,可以监控 mq 服务状态,以及消息消费情况,这里使用 rocketmq-console,同样该程序也将使用 docker 安装。
部署过程
首先我们需要 rocketmq docker 镜像,这里我们可以选择自己制作,直接拉取 git@github.com:apache/rocketmq-docker.git ,然后再制作镜像。 另外还可以直接使用 docker hub 上官方制作的镜像,镜像名: rocketmqinc/rocketmq
。
接着创建 mq 配置文件 broker.conf
,文件放置到 /opt/rocketmq/conf
,配置如下:
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
# 如果是本地程序调用云主机 mq,这个需要设置成 云主机 IP
brokerIP1=10.10.101.80
在创建如下文件夹:/opt/rocketmq/logs
,/opt/rocketmq/store
,最后创建 docker-compose.yml 文件,配置如下:
version: '2'
services:namesrv:image: rocketmqinc/rocketmqcontainer_name: rmqnamesrvports:- 9876:9876volumes:- /opt/rocketmq/logs:/home/rocketmq/logs- /opt/rocketmq/store:/home/rocketmq/storecommand: sh mqnamesrvbroker:image: rocketmqinc/rocketmqcontainer_name: rmqbrokerports:- 10909:10909- 10911:10911- 10912:10912volumes:- /opt/rocketmq/logs:/home/rocketmq/logs- /opt/rocketmq/store:/home/rocketmq/store- /opt/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf#command: sh mqbroker -n namesrv:9876command: sh mqbroker -n namesrv:9876 -c ../conf/broker.confdepends_on:- namesrvenvironment:- JAVA_HOME=/usr/lib/jvm/jreconsole:image: styletang/rocketmq-console-ngcontainer_name: rocketmq-console-ngports:- 8087:8080depends_on:- namesrvenvironment:- JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=rmqnamesrv:9876 - Dcom.rocketmq.sendMessageWithVIPChannel=false
注意点
这里需要注意 rocketmq broker 与 rokcetmq-console 都需要与 rokcetmq nameserver 连接,需要知道 nameserver ip。使用 docker-compose 之后,上面三个 docker 容器将会一起编排,可以直接使用容器名代替容器 ip,如这里 nameserver 容器名 rmqnamesrv。
配置完成之后,运行 docker-compose up 启动三个容器,启动成功后,访问 ip:8087,查看 mq 外部控制台,如果可以看到以下信息,rocketmq 服务启动成功。
初体验 rocketmq
这里将会使用 springboot 快速上手使用 mq,将会使用 rocketmq-spring-boot-starter
模块,pom 配置如下:
<!--在pom.xml中添加依赖-->
<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.0.3</version>
</dependency>
消费服务发送方配置如下:
## application.properties
rocketmq.name-server=ip:9876
rocketmq.producer.group=my-group
消费服务发送方程序如下:
@SpringBootApplication
public class ProducerApplication implements CommandLineRunner {@Resourceprivate RocketMQTemplate rocketMQTemplate;public static void main(String[] args){SpringApplication.run(ProducerApplication.class, args);}public void run(String... args) throws Exception {rocketMQTemplate.convertAndSend("test-topic-1", "Hello, World!");rocketMQTemplate.send("test-topic-1", MessageBuilder.withPayload("Hello, World! I'm from spring message").build());}}
消息消费方配置如下:
## application.properties
rocketmq.name-server=ip:9876
消息消费方运行程序如下:
@SpringBootApplication
public class ConsumerApplication{public static void main(String[] args){SpringApplication.run(ConsumerApplication.class, args);}@Slf4j@Service@RocketMQMessageListener(topic = "test-topic-1", consumerGroup = "my-consumer_test-topic-1")public static class MyConsumer1 implements RocketMQListener<String> {public void onMessage(String message) {log.info("received message: {}", message);}}
}
相关问题
- 消息发送方消息发送异常,异常如图所示:
Caused by: org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout
。
该异常是由于 brokerip 未设置正确导致,登录 mq 服务控制台,可以查看 broker 配置信息。
上面 192.168.128.3:10911
是 docker 容器 IP,这是一个主机内部 IP。这里需要将 IP 设置为云主机的 IP,需要在 broker.conf
修改 brokerIP1
参数。
- mq 控制台无法正常查看 mq 服务信息。
这个问题主要是 nameserver ip 设置错误导致。查看 mq 控制台运维页面,可以看到此时连接的 nameserver 地址信息。
可以看到这里设置的地址为:127.0.0.1:9876
。由于这里 mq 控制台使用 docker 容器,容器内直接访问 127.0.0.1:9876
将会访问自己内部,而非宿主机内正确程序。
这里需要在 docker 配置环境变量,配置如下:
- JAVA_OPTS= -Dlogging.level.root=info -Drocketmq.namesrv.addr=rmqnamesrv:9876
帮助文档
rocketmq-docker
RocketMq docker 搭建和基本概念
RocketMQ-Spring
rocketmq 部署启动指南-Docker 版相关推荐
- 启动rocketmq_RocketMQ 部署启动指南-Docker 版
最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑. 准备工作 在搭建之前,我们需要做一些准备工作,这里我们需要使用 ...
- orangepi zero2部署网心云docker版
orangepi zero2部署网心云docker版 安装docker docker安装网心云 挂载硬盘 设置开机自动挂载 多开 安装docker 一键安装 curl -fsSL https://ge ...
- RocketMQ部署安装(非Docker安装)
1.下载 下载地址:https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.3.2/rocketmq-all-4.3.2-bin-release.z ...
- 华为平板安装python_教你用树莓派安装集成docker版openwrt、homeassistant等及一些排坑指南...
教你用树莓派安装集成docker版openwrt.homeassistant等及一些排坑指南 2020-04-30 18:45:28 30点赞 290收藏 23评论 小编注:此篇文章来自即可瓜分10万 ...
- 商业级4G代理搭建指南【搭建篇之Docker版】
时间过得真快,距离这个系列的上一篇文章<商业级4G代理搭建指南[准备篇]>发布的时间已经过了两个星期了,上个星期由于各种琐事缠身,周二开始就没空写文章了,所以就咕咕咕了. 那么在准备篇中, ...
- 虚拟机基本部署(docker版)
虚拟机部署(docker版) 1.CentOS安装Docker 1.1卸载 1.2.安装Docker 1.3.启动docker 1.4.配置镜像加速 2.docker安装mysql 2.1 启动MyS ...
- ubuntu18.04部署tars架构(docker版)
一.docker安装 1.更新软件源列表 sudo apt-get update 2.安装软件包依赖 sudo apt install apt-transport-https ca-certifica ...
- centos 上传jar 命令_centos上快速将一个jar使用docker部署启动
通常的jar应用,直接部署在服务器上,使用服务器资源直接部署,一个jar,一个启动脚本,就可以了. 最近想到一个场景,让docker时间和宿主机的时间不一样,进行不同应用部署的隔离.整理一下docke ...
- 提升10倍生产力:IDEA远程一键部署SpringBoot到Docker
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 IDEA是Java开发利器,springboot是Java生态中最 ...
- 部署并使用Docker(Alibaba Cloud Linux 2)
部署并使用Docker(Alibaba Cloud Linux 2) 更新时间:2021-06-25 14:54 背景信息 部署Docker 使用Docker 制作Docker镜像 本文介绍如何在Al ...
最新文章
- 修改mysql 默认字符集 , 默认引擎
- 调用链系列四:调用链上下文传递
- NC | 植物分泌蛋白酶抑制细菌入侵的机理
- 王建民做客第六期青年学者月度沙龙 分享工业软件的开源创新发展模式
- 页面怎么把关键字保留下来_怎么做seo优化,以及网站SEO优化计划!
- C++中常用字符串相关的编程题
- Javaweb MVC设计模式、Modle发展史、项目分层和三层架构
- java xml数据解析_java xml解析,数据读取
- 漫话:如何给女朋友解释什么是BIO、NIO和AIO?
- linux重定向命令语法,linux的重定向命令应用及语法
- 学习yield《转》
- 谷歌约束控件(ConstraintLayout)扁平化布局入门
- 国内完全免费的电子图书下载网址
- 【Demo】文件下载操作(console版和web版)
- vb.net 教程 6-1 进程 Process类初探
- java 中文分词转拼音_如何实现拼音与汉字的互相转换
- Linux下新增磁盘
- 关于苹果公证(Apple Notarizition)机制的一些总结
- moviepy音视频剪辑:视频剪辑基类VideoClip的属性及方法详解
- 好听的歌曲单片机c语言程序,单片机C语言程序举例(三)
热门文章
- U-BOOT 编译过程
- cocos2d-x学习之旅(二):1.2 cocos2d-x Visual Studio2010 开发环境搭建 windows 7 32位
- 第十天学习@javascript
- 20款优秀的可以替代桌面软件的Web应用(转载自JavaEye)
- 拓端tecdat|使用R语言进行多项式回归、非线性回归模型曲线拟合
- 拓端tecdat|Python使用矩阵分解法找到类似的音乐
- jQuery学习笔记01
- 数据结构算法题整理3
- Java游戏程序设计教程 4.5打砖块游戏
- VScode报错“终端将被任务重用,按任意键关闭