centos7 install rocketmq 宿主机快速搭建RocketMQ单机开发环境

为什么采用宿主机而不采用 Docker 方式快速搭建

在搭建 RocketMQ 测试环境时,我们可以选择在宿主机上直接安装和配置,也可以使用 Docker 容器来快速搭建。然而,为什么我们选择了在宿主机上安装而不是使用 Docker 方式呢?

  1. 调整配置的灵活性:在 Docker 方式下,虽然可以使用环境变量来设置配置项,但是有时候需要对容器内部的配置文件进行修改,(默认RocketMQ broker 吃内存8个G电脑配置差docker更本起不来)这可能不太方便。在宿主机上直接安装,则可以直接编辑配置文件,更加灵活地调整配置。

  2. 调试和排查问题的方便性:在宿主机上安装的 RocketMQ 实例,可以直接在宿主机上查看日志、调试程序,更容易排查问题。而在 Docker 容器中,需要通过 Docker logs 命令或者进入容器内部来查看日志,相对来说更加繁琐。

综上所述,虽然 Docker 提供了快速部署和便捷管理的优势,但在某些情况下,直接在宿主机上安装 RocketMQ 可能更加灵活、性能更好,并且更容易调试和排查问题。因此,在选择搭建测试环境时,我们根据实际情况选择了在宿主机上安装 RocketMQ。

第一步:源码下载和安装

wget https://archive.apache.org/dist/rocketmq/4.9.5/rocketmq-all-4.9.5-bin-release.zipunzip rocketmq-all-4.9.5-bin-release.zipmv rocketmq-all-4.9.5-bin-release /app/rocketmq

查看RocketMQ的更多版本链接

第二步:修改初始内存

# 修改初始内存【修改两个启动脚本的jvm】
cd /app/rocketmq/bin/
vim runserver.sh
# 修改初始堆内存大小,要不测试环境没那么多内存 
原:JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"
改:JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"vim runbroker.sh
# 修改初始堆内存大小,要不测试环境没那么多内存 
原:  JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g"
改:  JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m"

第三步:启动RocketMQ单机

# 启动NameServer,bin目录前台启动,确定没报错再后台启动  【sh bin/mqnamesrv &】
[root@slavenode1 bin]# ./mqnamesrv
The Name Server boot success. serializeType=JSON# 启动broker,bin目录前台启动,确定没报错再后台启动
[root@masternode1 bin]# ./mqbroker -n localhost:9876
The broker[masternode1, 192.168.1.160:10911] boot success. serializeType=JSON and name server is localhost:9876# 查看进程
[root@masternode1 ~]# jps
2214 Jps
2071 BrokerStartup
1947 NamesrvStartup

第四步:发送消息测试

消费着启动

 export NAMESRV_ADDR=localhost:9876./tools.sh org.apache.rocketmq.example.quickstart.Consumer

发送测试消息

 export NAMESRV_ADDR=localhost:9876./tools.sh org.apache.rocketmq.example.quickstart.Producer

第五步:docker控制台搭建rocketmq-dashboard

docker run -d \--name rocketmq-dashboard \-p 8060:8080 \-v /apps/rocketmq-dashboard/data:/tmp/rocketmq-console/data \-e NAMESRV_ADDR=0.0.0.0:9876 \apacherocketmq/rocketmq-dashboard:1.0.0
  1. -v /apps/rocketmq-dashboard/data:/tmp/rocketmq-console/data 参数用于将主机的 /apps/rocketmq-dashboard/data 目录映射到容器的 /tmp/rocketmq-console/data
    目录,这样可以持久化保存 RocketMQ Dashboard 的数据。
  2. -e NAMESRV_ADDR=0.0.0.0:9876 参数用于设置环境变量 NAMESRV_ADDR,指定 RocketMQ 的 Namesrv 地址。
    在这里插入图片描述

第六步:rocketmq-client-go 测试延迟消息

延迟5秒代码测试示例
在这里插入图片描述

consumer.go

package mainimport ("context""fmt""github.com/apache/rocketmq-client-go/v2""github.com/apache/rocketmq-client-go/v2/consumer""github.com/apache/rocketmq-client-go/v2/primitive""os""time"
)func main() {// 设置推送消费者c, _ := rocketmq.NewPushConsumer(//消费组consumer.WithGroupName("testGroup"),// namesrv地址consumer.WithNameServer([]string{"127.0.0.1:9876"}),)// 必须先在 开始前err := c.Subscribe("Topic-test", consumer.MessageSelector{}, func(ctx context.Context, ext ...*primitive.MessageExt) (consumer.ConsumeResult, error) {for i := range ext {// 获取消息正文body := ext[i].Bodyfmt.Printf("获取到值:%s \n", body)}return consumer.ConsumeSuccess, nil})if err != nil {fmt.Println(err.Error())}err = c.Start()if err != nil {fmt.Println(err.Error())os.Exit(-1)}time.Sleep(time.Hour)err = c.Shutdown()if err != nil {fmt.Printf("shutdown Consumer error:%s", err.Error())}
}
export ROCKETMQ_GO_LOG_LEVEL=warn
go run   consumer.go

producer_delay.go


func main() {p, _ := rocketmq.NewProducer(// 设置 nameSrvAddr// nameSrvAddr 是 Topic 路由注册中心producer.WithNameServer([]string{"0.0.0.0:9876"}),// 指定发送失败时的重试时间producer.WithRetry(3),// 设置 Groupproducer.WithGroupName("testGroup"),)// 开始连接err := p.Start()if err != nil {fmt.Printf("start producer error: %s", err.Error())os.Exit(2)}// 设置节点名称topic := "Topic-test"// 循环发送信息 (同步发送)for i := 0; i < 10; i++ {msg := &primitive.Message{Topic: topic,Body:  []byte("RocketMQ Go producer_delay.go [" + strconv.Itoa(i) + "] " + time.Now().Format("2006-01-02 15:04:05")),}time.Sleep(time.Second)// WithDelayTimeLevel set message delay time to consume.// reference delay level definition: 1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h// delay level starts from 1. for example, if we set param level=1, then the delay time is 1s.// 设置消息的延时级别为 2,对应 RocketMQ 配置中的延时时间 5smsg.WithDelayTimeLevel(2)// 发送信息res, err := p.SendSync(context.Background(), msg)if err != nil {fmt.Printf("发送失败!:%s\n", err)} else {fmt.Printf("发送成功 : result=%s\n", res.String())}}// 关闭生产者err = p.Shutdown()if err != nil {fmt.Printf("shutdown producer error:%s", err.Error())}
}

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

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

相关文章

攻防世界-CatchCat

题目&#xff1a;附件为 分析题目&#xff0c;可知文件里面是一堆关于GPS的数据&#xff0c;所以我们将GPS的轨迹绘制出来&#xff08;GPS地图绘制网站&#xff1a;GPS Visualizer&#xff1a;从 GPS 数据文件绘制地图&#xff09; 将文件导入后绘制地图&#xff0c;得到如图&a…

【优选算法】专题1 -- 双指针 -- 移动零

前言: &#x1f4da;为了提高算法思维&#xff0c;我会时常更新这个优选算法的系列&#xff0c;这个专题是关于双指针的练习 &#x1f3af;个人主页&#xff1a;Dream_Chaser&#xff5e;-CSDN博客 一.移动零&#xff08;easy&#xff09; 描述&#xff1a; 「数组分两块」是⾮…

架构设计的核心目的与意义

以史为鉴&#xff0c;对我们了解架构设计的目的很有帮助。谈到架构设计&#xff0c;相信每个技术人员都是耳熟能详&#xff0c;但如果深入探讨一下&#xff0c;“为何要做架构设计&#xff1f;”或者“架构设计目的是什么&#xff1f;”类似的问题&#xff0c;大部分人可能从来…

单片机卡死的几大原因、分析、解决

阅读引言&#xff1a; 本文我想给大家分享一下我在学习过程中遇到的以及了解到的一些导致单片机运行卡死&#xff08;死锁&#xff09;的一些常见原因和解决办法&#xff0c; 请注意&#xff0c; 只是列举&#xff0c;并不是全部&#xff0c; 因为导致单片机运行卡死的原因无穷…

Qt-QPainter drawText方法不同重载之间的区别

QPainter类的drawText方法有如下重载&#xff1a; void drawText(const QPointF &position, const QString &text) void drawText(const QPoint &position, const QString &text) void drawText(int x, int y, const QString &text) void drawText(co…

APP在应用商店该如何做好节日营销

38妇女节刚刚过去&#xff0c;不少商家吃上了一波节日红利。 你有没有注意到很多App在应用商店里改头换面&#xff0c;开展了很多以“三八节”为主题的营销活动&#xff0c;并且取得了不错的成绩。 可见季节性营销策划对产品的下载量和用户留存率还是很重要的。 那么我们如何…

16.【CPP】详解继承

继承方式 如图 注意点 1.基类private成员在派生类中无论以什么方式继承都是不可见的。这里的不可见是指基类的私有成员还是被继承到了派生类对象中&#xff0c;但是语法上限制派生类对象不管在类里面还是类外面都不能去访问它 2.基类private成员在派生类中是不能被访问&#x…

电力物联网采集终端

电力物联网采集终端,通过采集设备数据&#xff0c;并将其传输到云端&#xff0c;实现精细管理和优化。 一、工作原理 电力物联网采集终端主要数据采集模块、通信模块等组成。采集设备的各项数据&#xff0c;如温度、湿度、电流等;数据采集模块将采集到的数据进行处理并存储;通…

索尼ILME-FX3摄像机RSV文件无法播放的修复方法

索尼摄像机rsv文件修复案例处理了很多&#xff0c;rsv是索尼mp4或者mxf文件封装失败时生成的临时文件&#xff0c;一般是由于断电或者摄像机意外重启导致的&#xff0c;下边来看下遇到rsv文件无法播放时的修复方法。 故障文件: 29.56G/rsv文件 故障现象: 摄像机型号为索尼IL…

【大模型API调用初尝试一】智谱AI 通义千问

大模型API调用初尝试一 调用大模型API能干什么智谱AI大模型API调用的过程获取API_KEYGLM_4同步调用GLM_4异步调用文生图大模型API调用 阿里云通义千问API调用过程单轮会话多轮会话 调用大模型API能干什么 大模型的参数非常庞大&#xff0c;功能非常强大&#xff0c;但是训练成…

node:internal/crypto/hash:69 this[kHandle] = new _Hash(algorithm, xofLen);

npm 打包报错 原因就是npm版本太高了&#xff0c;用的18版本&#xff0c;切换成16版本就好了。

UI 学习 二 可访问性 模式

教程&#xff1a;Accessibility – Material Design 3 一 颜色对比 颜色和对比度可以用来帮助用户看到和理解应用程序的内容&#xff0c;与正确的元素交互&#xff0c;并理解操作。 颜色可以帮助传达情绪、语气和关键信息。可以选择主色、辅助色和强调色来支持可用性。元素之…

H5 流光分割个人主页源码

源码名称&#xff1a;流光分割个人主页源码 源码介绍&#xff1a;一款流光分割特效个人主页源码&#xff0c;源码带大量跳转个人联系方式按钮和朋友按钮。同时带有个人介绍。 需求环境&#xff1a;H5 下载地址&#xff1a; https://www.changyouzuhao.cn/10241.html

电机参数辨识算法(2)——基于高频注入的磁链辨识策略

电机参数辨识算法&#xff08;1&#xff09;——基于高频注入的电感辨识策略-CSDN博客https://blog.csdn.net/m0_46903653/article/details/136722750?spm1001.2014.3001.5501上一期已经讲过了电感辨识方法。 今天这是参数辨识的第二期&#xff0c;今天来简单看看磁链的辨识。…

【数学建模】熵权法

之前我们学了层次分析法和topsis法&#xff0c;但是主观性十分强&#xff0c;有没有科学的方法得出权重呢&#xff1f;今天&#xff0c;我们来学习熵权法&#xff01; 基本概念&#xff1a; 熵权法&#xff0c;物理学名词&#xff0c;按照信息论基本原理的解释&#xff0c;信息…

SpringBoot+vue3打造企业级一体化SaaS系统

SpringBootvue3打造企业级一体化SaaS系统 简介&#xff1a;    全面提升前后端技术水平&#xff0c;独立完成全栈项目开发能力&#xff0c;快速进击全栈工程师&#xff0c;最终在面试中脱颖而出。整合后端主流技术&#xff08;Spring Boot、物理数据库隔离、加载动态权限、多…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Flex)

以弹性方式布局子组件的容器组件。 说明&#xff1a; 该组件从API Version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。Flex组件在渲染时存在二次布局过程&#xff0c;因此在对性能有严格要求的场景下建议使用Column、Row代替。Flex组…

Vue3基础笔记(1)模版语法 属性绑定 渲染

Vue全称Vue.js是一种渐进式的JavaScript框架&#xff0c;采用自底向上增量开发的设计&#xff0c;核心库只关注视图层。性能丰富&#xff0c;完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用&#xff0c;适用于场景丰富的web前端框架。灵活性和可逐步集成…

149.乐理基础-七和弦的第一转位、第二转位、第三转位

内容参考于&#xff1a;三分钟音乐社 上一个内容&#xff1a;148.常用的7个七和弦结构与简称 上一个内容里练习的答案&#xff1a; 前置内容&#xff1a;必须看过 140.音程的转位 和 146.三和弦的第一转位、第二转位这两个 现在还是狭义上、理论上的转位&#xff0c;下面用C…

高校实验室科研仪器开放共享存在的问题及对策建议

随着科技的迅速发展和高校科研水平的提高&#xff0c;高校实验室科研仪器的开放共享已经成为推动科研进步和创新发展的重要手段。然而&#xff0c;在实际操作中&#xff0c;我们也面临着诸多问题和挑战。本文将分析高校实验室科研仪器开放共享存在的问题&#xff0c;并提出相应…