RocketMQ - CentOS 7.x 安装单机版并测试
【安装前环境准备】 检查是否安装好JDK(必要):java -version 查看CPU信息: # cat /proc/cpuinfo # lscpu # getconf _NPROCESSORS_ONLN # cat /sys/devices/system/cpu/online # cat /proc/interrupts | egrep -i 'cpu查看内存信息: # free -hm # cat /proc/meminfo查看磁盘信息: # lsblk # fdisk -l - 显示系统中的磁盘分区表信息,包括硬盘的大小、分区类型等 # df -hl # df -a # du -sh [目录名] # du -sm [文件夹]`:查看指定文件夹的总M数 # du -h [目录名]`:查看指定文件夹下的所有文件大小(包含子文件夹) # ls -lh /opt/install-file/RocketMQ 防火墙端口开放 NameServer端口:9876 Broker端口:10911 Broker高可用(HA)端口:10912 Broker管理端口:10909(通常是10911 - 2,默认不开启) FastRemoting端口:通常为 Broker 监听端口 + 2(例如 10911 + 2 = 10913)状态:sudo systemctl status firewalld 启动:sudo systemctl start firewalld 查看:firewall-cmd --list-ports --permanent添加防火墙开放访问端口: firewall-cmd --zone=public --add-port=9876/tcp --permanent firewall-cmd --zone=public --add-port=10909/tcp --permanent firewall-cmd --zone=public --add-port=10911/tcp --permanent firewall-cmd --zone=public --add-port=10912/tcp --permanent加载:firewall-cmd --reload 重启:systemctl restart firewalld 停止:sudo systemctl stop firewalld安装解压工具:yum install -y unzip 创建安装目录:mkdir -p /opt/soft/rocketmq【正式安装 RocketMQ】1.下载:https://dist.apache.org/repos/dist/release/rocketmq/4.9.8/rocketmq-all-4.9.8-bin-release.zip2.解压到指定安装目录:unzip rocketmq-all-4.9.8-bin-release.zip -d /opt/soft/rocketmq/3.重命名文件夹# cd /opt/soft/rocketmq/ # mv rocketmq-all-4.9.8-bin-release rocketmq-all-4.9.8目录结构说明:benchmark :存放的是性能测试脚本bin:可执行文件脚本文件 conf: 存放配置文件的目录lib:其他第三方依赖库LICENSE:授权信息NOTICE:版本公告信息README.md4.配置环境变量执行路径:/opt/soft/rocketmq/rocketmq-all-4.9.8/bin 查看网卡eth0的IP地址:ifconfig# vim /etc/profile 添加 NAMESRV_ADDR 环境变量配置: # rocketmq config export NAMESRV_ADDR=192.168.1.210:9876保存生效:source /etc/profile5.修改启动脚本需要修改两个启动脚本:runserver.sh 与 runbroker.sh 脚本位置:/opt/soft/rocketmq/rocketmq-all-4.9.8/bin/ 先备份好原来的配置,然后开始修改a.修改runserver.sh脚本: vim runserver.sh找到 choose_gc_options() 函数,根据你的jdk版本修改启动配置参数: JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"根据你的机器配置修改java参数,比如:-Xms4g -Xmx4g -Xmn2g 改为 -Xms512m -Xmx512m -Xmn256mb.修改runbroker.sh脚本: vim runbroker.sh# 同样找到 choose_gc_log_directory ,修改函数中的java虚拟机参数配置如:JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g" 改为JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g"6.修改配置文件# cd /opt/soft/rocketmq/rocketmq-all-4.9.8/conf/ # ll # vim broker.confbrokerClusterName = DefaultCluster brokerName = broker-a brokerId = 0 deleteWhen = 04 fileReservedTime = 48 brokerRole = ASYNC_MASTER flushDiskType = ASYNC_FLUSH在文件文本后面添加如下配置:namesrvAddr=192.168.1.210:9876 -- IP地址根据自己的通信地址设置 autoCreateTopicEnable=true brokerIP1=192.168.1.210其他参数说明:brokerClusterName - MQ集群的名称,我们改为RocketMQ-Cluster。 brokerName - 队列的名字,配置为broker-a。 brokerId - 队列的id,0代表是“主”,其他正整数代表着“从”。 deleteWhen=04 - 代表着commitLog过期了,就会被删除。 fileReservedTime - commitLog的过期时间,单位是小时,这里配置的是48小时。 brokerRole - 队列的角色,ASYNC_MASTER是异步主。 flushDiskType - 保存磁盘的方式,异步保存。配置参数说明:namesrvAddr:nameSrv地址,如果nameSrv与broker在同一台服务器上运行,可以配置为localhost+端口。集群中最好配置为对外提供服务的IP地址+端口 autoCreateTopicEnable:true说明自动创建主题,false则需要手动创建 brokeIP1:这个一定要配置为对外提供服务的IP地址7.启动服务如果机器配置不够,启动前先清一下缓存 清除PageCache页面高速缓存:sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches 清除dentries和inodes,即目录项和索引节点:sudo sync && echo 2 > /proc/sys/vm/drop_cachesa.先启动namesrv# cd /opt/soft/rocketmq/rocketmq-all-4.9.8/bin/ 后台启动:nohup sh mqnamesrv & 后台带日志启动: nohup sh mqnamesrv > ../namesrv.log 2>&1 &b.然后启动broker:后台启动:nohup sh mqbroker -c ../conf/broker.conf & 后台指定日志启动:nohup sh mqbroker -c ../conf/broker.conf > ../broker.log 2>&1 &8.安装可视化管理控制台参考官方文档下载 rocketmq-dashboard-1.0.0-source-release.zip 源码包解压,按照文档说明进行配置和打包 官方打包指导:https://github.com/apache/rocketmq-dashboard 最终得到可运行的jar包:rocketmq-dashboard-1.0.0.jara.配置rocketmq-dashboard-1.0.0\src\main\resources\application.properties 等 b.使用mvn clean package -Dmaven.test.skip=true 打包获取可运行的jar包:rocketmq-dashboard-1.0.0.jar c.mkdir -p /opt/soft/rocketmq/rocketmq-dashboard d.将打包好的jar包上传到新建的 rocketmq-dashboard 目录下 e.进入rocketmq-dashboard目录,启动运行控制台:启动运行控制台: # nohup java -jar rocketmq-dashboard-1.0.0.jar --server.port=8090 --rocketmq.config.namesrvAddr=127.0.0.1:9876 > dashboard.log 2>&1 &访问控制台:ip:80909.查看服务启动状态查看进程: # jps -l 8753 rocketmq-dashboard-1.0.0.jar 407 org.apache.rocketmq.broker.BrokerStartup 32377 org.apache.rocketmq.namesrv.NamesrvStartup 8781 sun.tools.jps.Jps查看端口: # netstat -npl|grep :8090 tcp6 0 0 :::8090 :::* LISTEN 8753/java # netstat -npl|grep :9876 tcp6 0 0 :::9876 :::* LISTEN 32377/java # netstat -npl|grep :10911 tcp6 0 0 :::10911 :::* LISTEN 407/java # netstat -npl|grep :10912 tcp6 0 0 :::10912 :::* LISTEN 407/java10.测试引入客户端依赖:rocketmq-client<!-- rocketmq-client: 实际生产开发使用 rocketmq-spring-boot-starter 等具体依赖 --> <dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-client</artifactId><version>4.9.8</version> </dependency>编写生产者测试代码:import org.apache.rocketmq.client.exception.MQBrokerException; import org.apache.rocketmq.client.exception.MQClientException; import org.apache.rocketmq.client.producer.DefaultMQProducer; import org.apache.rocketmq.client.producer.SendResult; import org.apache.rocketmq.client.producer.SendStatus; import org.apache.rocketmq.common.message.Message; import org.apache.rocketmq.remoting.exception.RemotingException;public class TestSender {public static void main(String[] args) throws MQClientException, MQBrokerException, RemotingException, InterruptedException {// 1.创建消息生产者producer,并指定生产者组名DefaultMQProducer producer = new DefaultMQProducer("myproducer-group");// 2.指定 nameserver 地址producer.setNamesrvAddr("118.195.219.5:9876");// 设置发送超时时间producer.setSendMsgTimeout(10000);// 3.启动生产者 - producerproducer.start();// 4.构建消息对象Message message = new Message();message.setTopic("myTopic");message.setTags("myTag");message.setBody(("Test MQ from sync-main, 今年666!").getBytes());// 5.发送消息SendResult result = producer.send(message, 10000);String msgId = result.getMsgId();int queueId = result.getMessageQueue().getQueueId();String offsetMegId = result.getOffsetMsgId();long offset = result.getQueueOffset();SendStatus sendStatus = result.getSendStatus();String sendMsg = "同步消息发送状态:"+sendStatus+"\t"+"消息id:"+msgId+"\t 消费者队列id:"+queueId +"\t offsetMegId:"+offsetMegId+"\t offset:"+offset;System.out.println("发送的消息:" + sendMsg);// 6.关闭生产者producer.shutdown();} }编写消费者测试代码:import org.apache.rocketmq.client.consumer.DefaultMQPushConsumer; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyContext; import org.apache.rocketmq.client.consumer.listener.ConsumeConcurrentlyStatus; import org.apache.rocketmq.client.consumer.listener.MessageListenerConcurrently; import org.apache.rocketmq.client.exception.MQClientException; import org.apache.rocketmq.common.message.MessageExt; import org.slf4j.Logger; import org.slf4j.LoggerFactory;import java.util.List;public class TestConsumer {private static final Logger log = LoggerFactory.getLogger(TestConsumer.class);public static void main(String[] args) throws MQClientException {// 1.创建消息消费者DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("myconsumer-group");// 2.设置NameServerconsumer.setNamesrvAddr("118.195.219.5:9876");// 3.指定订阅的主题和标签consumer.subscribe("myTopic","*");// 4.注册监听器与编写回调函数consumer.registerMessageListener(new MessageListenerConcurrently() {@Overridepublic ConsumeConcurrentlyStatus consumeMessage(List<MessageExt> msgList, ConsumeConcurrentlyContext context) {log.info("Received Message size =>{}", msgList.size());for (MessageExt msg : msgList) {System.out.println("消费端接收到消息主题为: " + msg.getTopic() + "的消息, 队列ID为:" + msg.getQueueId());System.out.println("消费端接收到消息内容为 " + new String(msg.getBody()));}// 标记该消息已经被成功消费return ConsumeConcurrentlyStatus.CONSUME_SUCCESS;}});// 5.启动消费者consumer.start();System.out.printf("MQ Consumer Started.%n");}}运行测试,如果没问题,说明 RocketMQ 安装成功!
相关文章:
RocketMQ - CentOS 7.x 安装单机版并测试
【安装前环境准备】检查是否安装好JDK(必要):java -version查看CPU信息: # cat /proc/cpuinfo # lscpu # getconf _NPROCESSORS_ONLN # cat /sys/devices/system/cpu/online # cat /proc/interrupts | egrep -i cpu查看内存信息: # free -hm …...
[JavaWeb玩耍日记]HTML+CSS+JS快速使用
目录 一.标签 二.指定css 三.css选择器 四.超链接 五.视频与排版 六.布局测试 七.布局居中 八.表格 九.表单 十.表单项 十一.JS引入与输出 十二.JS变量,循环,函数 十三.Array与字符串方法 十四.自定义对象与JSON 十五.BOM对象 十六.获取…...
如何使用ArcGIS Pro创建最低成本路径
虽然两点之间直线最短,但是在实际运用中,还需要考虑地形、植被和土地利用类型等多种因素,需要加权计算最低成本路径,这里为大家介绍一下计算方法,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载…...
Neoverse CSS N3:实现市场领先能效的最快途径
区分老的架构 从云到边缘,Arm Neoverse 提供无与伦比的性能、效率、设计灵活性和 TCO 优势,正在颠覆传统基础设施芯片。 我们看到云和超大规模服务运营商正在推动更高的计算密度。随着 128 核心 CPU 设计上市(Microsoft Cobalt、阿里巴巴 Y…...
JavaScript实现的计时器效果
之前做过电商网站倒计时的效果,今天在倒计时的基础上,把代码修改了一下,改为计时器效果,实现了以下功能: 1.点击“开始”后,按秒计时且“开始”文字变为“停止”; 2.点击“停止”,计…...
仿函数(Functor(c++))
定义 仿函数(Functor)是一个可以像函数那样被调用的类对象。这意味着它实现了operator(),使得类的对象可以像函数那样被调用。 仿函数的主要特点 它是一个类。它重载了operator()。可以通过创建该类的对象,并像函数那样调用该对…...
智能汽车加速车规级存储应用DS2431P+TR 汽车级EEPROM 存储器IC
DS2431PT&R是一款1024位1-Wire EEPROM芯片,由四页存储区组成,每页256位。数据先被写入一个8字节暂存器中,经校验后复制到EEPROM存储器。该器件的特点是,四页存储区相互独立,可以单独进行写保护或进入EPROM仿真模式…...
js json转换成字符串
js中JSON数据转换成字符串,可以使用JSON.stringify()方法。 var obj {name: "张三", age: 18, gender: "男"}; var jsonString JSON.stringify(obj); console.log(jsonString); // 输出 {"name":"张三","age"…...
Linux笔记--基本操作指令
一、查看日期与日历 1.date指令 显示日期 #用法1:dateCST: China Standard Time时区,中国标准时间 #用法2: date 指定格式 [常用格式]: "%Y-%m-%d"(%F): 2022-07-25 "%H:%M:%S"(%T): 14:53:44 "%F %T" #用法3: date -d "-1 da…...
论文阅读:基于超像素的图卷积语义分割(图结构数据)
#Superpixel-based Graph Convolutional Network for Semantic Segmentation github链接 引言 GNN模型根据节点特征周围的边来训练节点特征,并获得最终的节点嵌入。通过利用具有不同滤波核的二维卷积对来自附近节点的信息进行整合,给定超像素方法生成的…...
记录踩过的坑-macOS下使用VS Code
目录 切换主题 安装插件 搭建Python开发环境 装Python插件 配置解释器 打开项目 打开终端 切换主题 安装插件 方法1 方法2 搭建Python开发环境 装Python插件 配置解释器 假设解释器已经通过Anaconda建好,只需要在VS Code中关联。 打开项目 打开终端...
30天JS挑战(第十四天)------数据的复制
第十四天挑战(数据的复制) 地址:https://javascript30.com/ 所有内容均上传至gitee,答案不唯一,仅代表本人思路 中文详解:https://github.com/soyaine/JavaScript30 该详解是Soyaine及其团队整理编撰的,是对源代码…...
【洛谷 P8682】[蓝桥杯 2019 省 B] 等差数列 题解(数学+排序+辗转相除法)
[蓝桥杯 2019 省 B] 等差数列 题目描述 数学老师给小明出了一道等差数列求和的题目。但是粗心的小明忘记了一部分的数列,只记得其中 N N N 个整数。 现在给出这 N N N 个整数,小明想知道包含这 N N N 个整数的最短的等差数列有几项? 输…...
Linux:kubernetes(k8s)部署CNI网络插件(4)
在上一章进行了node加入master Linux:kubernetes(k8s)node节点加入master主节点(3)-CSDN博客https://blog.csdn.net/w14768855/article/details/136420447?spm1001.2014.3001.5501 但是他们显示还是没准备好 看一下…...
docker save 命令 docker load 命令 快速复制容器
docker save 命令 docker load 命令 1、docker save 命令2、docker load 命令 1、docker save 命令 docker save 命令用于在系统上把正在使用的某个容器镜像 导出成容器镜像文件保存下载,以便在其他系统上导入这个容器镜像文件 以便快速在其他服务器上启动相同的容…...
Apache Flink连载(三十七):Flink基于Kubernetes部署(7)-Kubernetes 集群搭建-3
🏡 个人主页:IT贫道-CSDN博客 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~ 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录...
【机器学习】实验6,基于集成学习的 Amazon 用户评论质量预测
清华大学驭风计划课程链接 学堂在线 - 精品在线课程学习平台 (xuetangx.com) 代码和报告均为本人自己实现(实验满分),此次代码开源大家可以自行参考学习 有任何疑问或者问题,也欢迎私信博主,大家可以相互讨论交流哟…...
【寸铁的刷题笔记】图论、bfs、dfs
【寸铁的刷题笔记】图论、bfs、dfs 大家好 我是寸铁👊 金三银四,图论基础结合bfs、dfs是必考的知识点✨ 快跟着寸铁刷起来!面试顺利上岸👋 喜欢的小伙伴可以点点关注 💝 🌞详见如下专栏🌞 &…...
vue2 + axios + mock.js封装过程,包含mock.js获取数据时报404状态的解决记录,带图文,超详细!!!
vue axios mock.js 以下是封装的过程,记录一下 1、首先先了解什么是mock.js的用途及特点 官网地址:Mock.js (mockjs.com) 作用:生成随机数据,拦截 Ajax 请求 优势: 2、了解axios的原理及使用 官网地址:…...
对象变更记录objectlog工具(持续跟新)
文章目录 前言演示代码演示环境引入项目项目框架操作步骤 设计介绍参考仓库 前言 系统基于mybatis-plus, springboot环境 对于重要的一些数据,我们需要记录一条记录的所有版本变化过程,做到持续追踪,为后续问题追踪提供思路。下面展示预期效果…...
用for循环语句求和
Matlab里面的循环结构语句主要有for循环语句和while循环语句两种形式,这篇博文学习for循环语句。for循环语句一般用于循环次数已经确定的情况,格式为for 循环变量起始值:步长:终止值循环体end循环变量从起始值开始计数ÿ…...
虚拟化与加密环境下勒索软件检测的IO模式识别与模型泛化实践
1. 项目概述:当勒索软件检测遇上虚拟化与加密在存储安全领域,勒索软件检测一直是个“猫鼠游戏”。传统的检测方法,尤其是那些依赖文件熵值(Entropy)突变的方案,在过去几年里确实立下了汗马功劳。其原理很直…...
服务器被入侵后如何应急响应:安全运维实战指南
1. 这不是演习:当告警邮件凌晨三点弹出来时,你手边该有什么 “服务器CPU持续100%、SSH登录异常增多、/tmp目录下出现陌生可执行文件”——这类告警我见过太多次。不是在靶场演练,不是在CTF赛题里,而是真实发生在某次金融客户核心A…...
火焰不飘、不燃、不爆?,Midjourney 6.6火效失效紧急修复方案(含--no参数黑名单清单与替代性热力图引导法)
更多请点击: https://codechina.net 第一章:火焰不飘、不燃、不爆?——Midjourney 6.6火效失效现象的本质溯源 近期大量用户反馈,在 Midjourney v6.6 中使用 fire、 flame、 blazing 等关键词生成图像时,火焰元素普遍…...
AI系统误差传播建模:从仿真数据生成到高效参数估计的完整方案
1. 项目概述:当AI系统出错时,误差是如何“传染”的?在自动驾驶汽车、工业机器人或者医疗影像诊断这类复杂的人工智能系统里,一个常见的架构是“流水线”式的多阶段处理。比如,一辆自动驾驶汽车先通过摄像头和激光雷达“…...
Unity 2021.3新手实战:C#脚本+物理系统+UI交互三模块协同开发
1. 这不是“又一个Unity入门教程”,而是我带6个实习生从零做出可玩Demo的真实复盘你点开这个标题,大概率是刚装完Unity,对着空荡荡的Scene视图发呆——新建一个Cube,拖进一个C#脚本,写了个Debug.Log("Hello"…...
Evident方法论:用观察、假设、测试构建可复现的数据科学工作流
1. 项目概述:为什么我们需要一种新的数据科学方法论?干了十多年数据科学和机器学习项目,从初创公司到大型企业都待过,我越来越觉得,我们这行当的“工作方式”有点不对劲。项目周期总是难以预估,代码和数据像…...
Qwen模型 LeetCode 2577. 在网格图中访问一个格子的最少时间 Java实现
哎呀,这道题我可太熟啦!2577. 在网格图中访问一个格子的最少时间,听起来就很有挑战性对不对?让我跟你聊聊我的解法思路~这其实是个典型的最短路径问题呢。想象一下我们站在一个神奇的网格世界里,每个格子都有自己的&qu…...
云服务器Nginx静态网站首屏慢的四层根因与优化方案
1. 为什么明明用了Nginx,静态网站首屏加载却要3秒以上?你有没有遇到过这种情况:在云服务器上用Nginx部署了一个纯HTMLCSSJS的静态站点,连数据库都不用,理论上应该毫秒级响应——结果打开首页,F12 Network面…...
8个必备的数据采集工具详解,低代码爬虫~
网络爬虫是一种常见的数据采集技术,你可以从网页、 APP上抓取任何想要的公开数据,当然需要在合法前提下。 爬虫使用场景也很多,比如: 搜索引擎机器人爬行网站,分析其内容,然后对其进行排名,比…...
