记RocketMQ本地开发环境搭建始末
前言
最近工作中涉及到了RocketMQ的应用,为方便开发决定本地搭建一套RocketMQ的使用环境。
果然实践是个好东西...
VMware虚拟环境搭建
这个网上有很多教程,只会比我写的详细有条理,这里就不在赘述了。
虚拟机搭建好之后每次重启电脑都无法正常使用,明明前一秒还在愉悦的操练着。
如上图就是不再快乐的现象,如下图就是可以继续快乐的解决方法。
其实是NAT的服务未启动导致的。
计算机右击选择管理
RocketMQ搭建
官网下载
下载 | RocketMQ
我这里以4.9.5的版本进行的搭建
上传解压
上传到自定义的目录下解压,我的是:/app/rocketmq/rocketmq-all-4.9.5-bin-release 仅做参考
下图是解压后的目录结构
调整运行内存配置
由于感情深厚的电脑性能有限,所有bin/runserver.sh脚本里的内存配置需要调小些:
jdk是1.8的版本所以只改这里就好了。
同样的修改bin/runbroker.sh脚本里的内存配置:
启动服务
RocketMQ有两类服务需要启动,一类是nameService,一类是brokerService。
#启动nameService
cd /app/rocketmq/rocketmq-all-4.9.5-bin-release
nohup bin/mqnamesrv &
#启动brokerService
cd /app/rocketmq/rocketmq-all-4.9.5-bin-release
nohup bin/mqbroker &
#查看启动日志
tail -f nohup.out
成功日志如下:
快速体验
RocketMQ提供了可以快速体验消息收发功能的脚本
cd /app/rocketmq/rocketmq-all-4.9.5-bin-release/bin
#生产者发消息
tools.sh org.apache.rocketmq.example.quickstart.Producer
#消费者消费消息
tools.sh org.apache.rocketmq.example.quickstart.Consumer
RocketMQ Dashboard 搭建
RocketMQ Dashboard 是官方提供的一款可视化管理服务
官网下载
下载 | RocketMQ
官方只提供了源码,需要自行使用maven进行编译。
修改配置
上传解压
上传至自定义的目录并解压,我的是:/app/rocketmq/rocketmq-dashboard-1.0.0 仅做参考
maven编译
cd /app/rocketmq/rocketmq-dashboard-1.0.0
mvn clean package -Dmaven.test.skip=true
启动服务
编译之后该目录会出现target文件夹,target内有打好的jar包
#执行命令启动dashboard服务
java -jar rocketmq-dashboard-1.0.0.jar
打印这个日志说明成功了,上面显示了端口8800
若浏览器输入地址后提示无法访问此网站,则是由于虚拟机防火墙导致的,简单粗暴就是把防火墙关掉并且开机禁止自启,要么就放开端口(记得重启防火墙不然不生效)。
#检查防火墙是否启用
firewall-cmd --state
#启动防火墙
systemctl start firewalld
#停止防火墙
systemctl stop firewalld
#重启防火墙
systemctl restart firewalld
#开机自启动防火墙
systemctl enable firewalld
#禁止开机自启动防火墙
systemctl disable firewalld
#打开8800端口,添加永久规则
firewall-cmd --zone=public --add-port=8800/tcp --permanent
#关闭8800端口,移除永久规则
firewall-cmd --zone=public --remove-port=8800/tcp --permanent
访问
然后欢迎来到Dashboard
RocketMQ 分布式集群搭建
你知道的我是不会满足于单节点部署的
虚拟机准备
首先对虚拟机进行克隆,这样每台机子的信息,装的插件等等都是一样的,用之前只需要改一下主机名称、静态的ip地址就可以了。
#修改主机名称
hostnamectl set-hostname centos2
#查看主机名称
hostname
#修改静态IP
cd /etc/sysconfig/network-scripts/
vi ifcfg-ens32
集群配置文件
贴心的官方为我们提供了多种集群部署的配置文件模板
2m-noslave:2主无从
2m-2s-sync:2主2从同步
2m-2s-async:2主2从异步
dledger:dledger高可用集群
修改配置
这次按照2m-2s-async部署
主机 | 用途1 | 用途2 |
centos1 | 部署NameServer1 | 部署Dashboard |
centos2 | 部署NameServer2 | 部署BrokerServer-a,BrokerServer-b-s |
centos3 | 部署NameServer3 | 部署BrokerServer-b,BrokerServer-a-s |
第一组broker服务
broker-a.properties
broker-b-s.properties
第二组broker服务
broker-b.properties
broker-a-s.properties
注意:store的路径不能一样,不然同一台机子启动第二个broker服务时会报错,如下:
java.lang.RuntimeException: Lock failed,MQ already started
at org.apache.rocketmq.store.DefaultMessageStore.start(DefaultMessageStore.java:240)
at org.apache.rocketmq.broker.BrokerController.start(BrokerController.java:855)
at org.apache.rocketmq.broker.BrokerStartup.start(BrokerStartup.java:63)
at org.apache.rocketmq.broker.BrokerStartup.main(BrokerStartup.java:57)
这是因为abort是RocketMQ判断服务是否正常关闭的一个标识文件,正常情况下,会在启动时创建,在关闭服务时删除。但如果遇到类似服务器宕机,或者kill -9等非正常关闭服务的情况,这个abort文件不会删除,因此RocketMQ就可以据此判断上一次服务是否正常关闭,非正常则后续就会做一些数据恢复的操作。
启动服务
#第一组服务启动
cd /app/rocketmq/rocketmq-all-4.9.5-bin-release/
nohup bin/mqbroker -c ./conf/2m-2s-async/broker-a.properties &
nohup bin/mqbroker -c ./conf/2m-2s-async/broker-b-s.properties &
#第二组服务启动
cd /app/rocketmq/rocketmq-all-4.9.5-bin-release/
nohup bin/mqbroker -c ./conf/2m-2s-async/broker-b.properties &
nohup bin/mqbroker -c ./conf/2m-2s-async/broker-a-s.properties &
检查集群服务
cd /app/rocketmq/rocketmq-all-4.9.5-bin-release/bin
mqadmin clusterList
Dashboard配置
修改application.properties文件的rocketmq.config.namesrvAddr属性
cd /app/rocketmq/rocketmq-dashboard-1.0.0/src/main/resources
vi application.properties
修改后重新编译即可
若出现下面报错则需要添加环境变量
vi /etc/profile
export NAMESRV_ADDR='localhost:9876'
source /etc/profile
出现下面报错则需要放开对应的端口。
网上很多说broker的配置要添加brokerIP1=xx.xx.xx.xx,咱们是用的本机不是云服务器,所有不用。
需开放的端口
每个服务器需开放七个端口
namesrv:9876
broker主节点:10911、10909、10912
broker从节点:11011、11009、11012
端口规则说明:
namesrv默认端口:9876
broker配置的listenPort 端口:10911
vip通道端口为:listenPort - 2 = 10909
ha通道端口为:listenPort + 1 = 10912
其他命令
查看所有的topic:sh mqadmin topicList -n nameserver地址
查看自定的topic:sh mqadmin topicList -n nameserver地址 | grep YourTopicName
查看消费者信息:sh mqadmin consumerProgress -n nameserver地址
查看消费者信息:sh mqadmin consumerProgress -n nameserver地址 -g yourConsumerGroup
查看Broker状态:sh mqadmin brokerStatus -n nameserver地址 -b brokerIP
未完待续...
相关文章:

记RocketMQ本地开发环境搭建始末
前言 最近工作中涉及到了RocketMQ的应用,为方便开发决定本地搭建一套RocketMQ的使用环境。 果然实践是个好东西... VMware虚拟环境搭建 这个网上有很多教程,只会比我写的详细有条理,这里就不在赘述了。 虚拟机搭建好之后每次重启电脑都无…...
2023年全国职业院校技能大赛“ 信息安全管理与评估” 测试题2
一.单选题 1、下列不属于口令安全威胁的是?( ) A、 弱口令 B、 明文传输 C、 MD5 加密 D、 多账户共用一个密码 2、在学校或单位如果发现自己的计算机感染了病毒,应首先采取什么措施 ( )。 A、断开网络 B、告知领导 C、杀毒 D、重…...

flutter开发实战-readmore长文本展开和收缩控件
flutter开发实战-readmore长文本展开和收缩控件 当长文本展开和收缩控件,我们需要使用readmore来处理长文本展开和收缩,方便阅读 一、引入readmore 在工程的pubspec.yaml中引入插件 readmore: ^2.1.0ReadMoreText的属性如下 const ReadMoreText(this.…...
如何使用简单的分支策略来保护您的 Git 项目
良好的分支策略可以使项目源代码获得一致且安全的数据,所有协作者可以在更短的生命周期内共享和访问这些数据。 您必须以灵活的方式设计项目模型,以便对所有成员角色和权限进行良好的管理。 我要谈论的并没有什么令人惊讶的新鲜事。您可能已经知道一些…...
vue3的 nextTick()的使用
引言: 当你修改了响应式状态时,DOM 会被自动更新。但是需要注意的是,DOM 更新不是同步的。Vue 会在“next tick”更新周期中缓冲所有状态的修改,以确保不管你进行了多少次状态修改,每个组件都只会被更新一次。 要等待…...

Redis Lua沙盒绕过 命令执行(CVE-2022-0543)漏洞复现
Redis Lua沙盒绕过 命令执行(CVE-2022-0543)漏洞复现 Redis如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。–那么这也就是redis未授权访问了 Redis的默认端口是6379 可以用空间测绘搜索ÿ…...
react中useState、useRef、变量之间的区别
函数组件有函数作用域,每次render时,声明的方法会生成新的引用,声明的普通变量会重新声明并赋值初始值,而useRef和useState会保留状态。 useState、useRef、变量的区别 1. useState 组件更新不会改变之前的状态,可以保…...

企业软件的分类|app小程序网站定制开发
企业软件的分类|app小程序网站定制开发 企业软件是指为满足企业管理和运营需求而设计和开发的一类软件,它通常用于支持企业的各项业务活动和流程。根据其功能和应用领域的不同,可以将企业软件分为以下几类。 1. 企业资源计划(ERP)…...

Flink(八)【窗口】
前言 终于忙完了四门专业课的期末,确实挺累啊。今天开始继续学习 Flink ,接着上次的内容。 今日摘录: 他觉得一个人奋斗更轻松自在。跟没有干劲的人在一起厮混,只会徒增压力。 -《解忧杂货店》 1、窗口 之前我们已经了解了…...

云轴科技ZStack信创云平台助力国泰君安期货实现信创改造
信创是数字中国建设的重要组成部分,也是数字经济发展的关键推动力量。作为云基础软件企业,云轴科技ZStack 产品矩阵全面覆盖数据中心云基础设施,ZStack信创云首批通过可信云《一云多芯IaaS平台能力要求》先进级,是其中唯一兼容四种…...
C语言猜数字小游戏
本文将介绍如何使用C语言写一个猜数字的小游戏 具体代码如下: #include<stdio.h> #include<stdlib.h> #include<time.h>// 显示游戏菜单 void menu() {printf("**** 猜数字游戏! ****\n");printf("**** 按1开始游戏 ****\…...
自定义BeanPostProcessor之XssBeanPostProcessor
什么是BeanPostProcessor BeanPostProcessor是Spring框架中的一个重要的扩展点,它允许开发者在Bean初始化前后对Bean进行自定义处理。Spring中有很多内置的BeanPostProcessor,如AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcess…...

如何使用Windows自带的IIS服务搭建本地站点并远程访问
文章目录 1.前言2.Windows网页设置2.1 Windows IIS功能设置2.2 IIS网页访问测试 3. Cpolar内网穿透3.1 下载安装Cpolar内网穿透3.2 Cpolar云端设置3.3 Cpolar本地设置 4.公网访问测试5.结语 1.前言 在网上各种教程和介绍中,搭建网页都会借助各种软件的帮助…...
【微软技术栈】基于任务的异步编程
本文内容 隐式创建和运行任务显式创建和运行任务任务 ID任务创建选项任务、线程和区域性创建任务延续创建分离的子任务创建子任务等待任务完成组合任务处理任务中的异常取消任务TaskFactory 类无委托的任务自定义计划程序相关数据结构自定义任务类型 任务并行库 (TPL) 以“任…...
react hooks 学习之react router v6 路由表配置
/ 如果你是在ts中,那么这个这个文件名是router.ts那么这个<Home/>这里会报eslint错误,所以为了解决这个错误,直接改成router.tsx就行 import { RouteObject } from react-router-dom; import Home from ../page/Home; import About fr…...

Echarts 设置数据条颜色 宽度
设置数据条颜色(推荐) let yData [{value: 500,time: 2012-11-12,itemStyle: //设置数据条颜色{normal: { color: red }}},{value: 454,time: 2020-5-17},{value: 544,time: 2022-1-22},{value: 877,time: 2013-1-30}, {value: 877,time: 2012-11-12}]…...
2023-11-30 通过中缀表达式转换后缀表达式, 用C语言完成一个简单的计算器
点击 <C 语言编程核心突破> 快速C语言入门 通过中缀表达式转换后缀表达式, 用C语言完成一个简单的计算器 前言一、中缀表达式和后缀表达式 (AI辅助)二、中缀转后缀规则及后缀运算规则 (AI辅助)总结 前言 要解决问题: 在练习用Qt完成一个简单的计算器时, 需要将一个文本…...
设计模式总目录
目录 设计模式 1. 创建型模式 1.1 工厂方法模式 1.2 抽象工厂模式 1.3 单例模式 1.4 建造者模式 1.5原型模式 2. 结构型模式 2.1 适配器模式 2.2 装饰器模式 2.3 代理模式 2.4 外观模式 2.5 桥接模式 2.6 组合模式 2.7 享元模式 3. 行为型模式 3.1 策略模式 …...

通俗理解词向量模型,预训练模型,Transfomer,Bert和GPT的发展脉络和如何实践
最近研究GPT,深入的从transfomer的原理和代码看来一下,现在把学习的资料和自己的理解整理一下。 这个文章写的很通俗易懂,把transformer的来龙去脉,还举例了很多不错的例子。 Transformer通俗笔记:从Word2Vec、Seq2S…...

键入网址到网页显示,期间发生了什么?(计算机网络)
浏览器首先会对URL进行解析 下面以http://www.server.com/dir1/file1.html为例 当没有路径名时,就代表访问根目录下事先设置的默认文件,也就是 /index.html 或者 /default.html 对URL进行解析之后,浏览器确定了 Web 服务器和文件名&#x…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...

深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...

基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...