热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RocketMQ单机版安装

一、环境信息centos7jdk8rocketmq4.7.0二、安装进入软件安装包目录cdhomesoftware下载RocketMQ的Binary版安装包,也可以上传自己编译的w

一、环境信息

  • centos7
  • jdk 8
  • rocketmq 4.7.0

二、安装

进入软件安装包目录

cd /home/software/

下载RocketMQ的 Binary版安装包,也可以上传自己编译的

wget https://mirror.bit.edu.cn/apache/rocketmq/4.7.0/rocketmq-all-4.7.0-bin-release.zip   

解压文件并重命名目录

unzip rocketmq-all-4.7.0-bin-release.zip
# 重命名目录名
mv rocketmq-all-4.7.0-bin-release rocketmq

将目录移动 /usr/local 目录下

mv rocketmq /usr/local

查看目录包含内容

cd /usr/local/rocketmq 
ll
drwxr-xr-x 2 root root  4096 Mar  5 19:44 benchmark
drwxr-xr-x 3 root root  4096 Mar  4 09:59 bin
drwxr-xr-x 6 root root  4096 Mar  4 09:59 conf
drwxr-xr-x 2 root root  4096 Mar  5 19:44 lib
-rw-r--r-- 1 root root 17336 Mar  4 09:59 LICENSE
-rw-r--r-- 1 root root  1338 Mar  4 09:59 NOTICE
-rw-r--r-- 1 root root  4948 Mar  4 09:59 README.md
  • LICENSE、NOTICE、README.md 包含一些版本声明和功能声明信息;

  • benchmark 里包含运行 benchmark 程序的 shell 脚本;

  • bin 目录包含各种使用 RocketMQshellcmd 脚本,如启动 NameServer 的脚本 mqnamesrv,启动 Broker 的脚本 mqbroker 等;

  • conf ** 目录存放配置文件,包括三种方式的 broker 配置文件 、logback** 日志配置文件等;

  • lib 目录包含 RocketMQ各模块的 jar 包和依赖的其他 jar 包。

三、启动服务

3.1 启动顺序

先启动 NameServer,然后启动 Broker

3.2 启动 NameServer

nohup sh bin/mqnamesrv &

通过 JPS 命令查看Java 进程

[root@VM_0_15_centos rocketmq]# jps
12833 Jps

发现 NameServer并没有启动,我们来查看日志看看错误原因:

tail -n 30 nohup.out

信息如下:

# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (mmap) failed to map 2147483648 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /usr/local/rocketmq/hs_err_pid12459.log

可以看到是因为内存不足导致无法启动,这是因为RocketMQ 默认的配置需要在4G内存以上的环境才能正常需要,我们的服务器只有2G所以会启动失败,我们要调整下它的配置:

vim bin/runserver.sh

可以看到默认的内存是 4G

JAVA_OPT="${JAVA_OPT} -server -Xms4g -Xmx4g -Xmn2g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

我们将其都调整为 1G

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

同理 Broker 也会有这个问题,我们也来一起配置下

vim bin/runbroker.sh
JAVA_OPT="${JAVA_OPT} -server -Xms8g -Xmx8g -Xmn4g"

调整为 1G:

JAVA_OPT="${JAVA_OPT} -server -Xms1g -Xmx1g -Xmn1g"

重新启动 NameServer:

nohup sh bin/mqnamesrv &

查看进程:

[root@VM_0_15_centos bin]# jps
1781 NamesrvStartup
1800 Jps

可以看到已经启动了

3.3 启动 Broker

nohup ./bin/mqbroker -n monchickey:9876 &

查看进程:

[root@localhost rocketmq]# jps
1844 Jps
1781 NamesrvStartup
1837 BrokerStartup

可以看到 Broker 也启动了。

3.4 启动消息生产消费测试

设置环境变量:服务器的位置

export NAMESRV_ADDR=localhost:9876       

生产消息:

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
SendResult [sendStatus=SEND_OK, msgId=C0A8892F09D44DC639966908745C0000, offsetMsgId=C0A8892F00002A9F00000000000249FA, messageQueue=MessageQueue [topic=TopicTest, brokerName=localhost, queueId=1], queueOffset=209]
SendResult [sendStatus=SEND_OK, msgId=C0A8892F09D44DC63996690874790001, offsetMsgId=C0A8892F00002A9F0000000000024AAC, messageQueue=MessageQueue [topic=TopicTest, brokerName=localhost, queueId=2], queueOffset=209]

消费消息:

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
ConsumeMessageThread_1 Receive New Messages: [MessageExt [brokerName=localhost, queueId=3, storeSize=180, queueOffset=32, sysFlag=0, bornTimestamp=1584753866001, bornHost=/192.168.137.47:46826, storeTimestamp=1584753866003, storeHost=/192.168.137.47:10911, msgId=C0A8892F00002A9F0000000000005AFA, commitLogOffset=23290, bodyCRC=724156045, recOnsumeTimes=0, preparedTransactiOnOffset=0, toString()=Message{topic='TopicTest', flag=0, properties={MIN_OFFSET=0, MAX_OFFSET=208, CONSUME_START_TIME=1584754056909, UNIQ_KEY=C0A8892F08E74DC639966903F1100082, WAIT=true, TAGS=TagA}, body=[72, 101, 108, 108, 111, 32, 82, 111, 99, 107, 101, 116, 77, 81, 32, 49, 51, 48], transactiOnId='null'}]] 

注:我们这里使用官方提供的 demo 程序来验证下 MQ 的生产和消费

3.5 停止服务

# 停止 Broker
sh bin/mqshutdown broker
# 停止 NameServer  
sh bin/mqshutdown namesrv

推荐阅读
  • 本文介绍了 Java 中 io.netty.channel.kqueue.KQueueStaticallyReferencedJniMethods.evfiltSock() 方法的使用及其代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 本文深入解析了通过JDBC实现ActiveMQ消息持久化的机制。JDBC能够将消息可靠地存储在多种关系型数据库中,如MySQL、SQL Server、Oracle和DB2等。采用JDBC持久化方式时,数据库会自动生成三个关键表:`activemq_msgs`、`activemq_lock`和`activemq_ACKS`,分别用于存储消息数据、锁定信息和确认状态。这种机制不仅提高了消息的可靠性,还增强了系统的可扩展性和容错能力。 ... [详细]
  • JVM钩子函数的应用场景详解
    本文详细介绍了JVM钩子函数的多种应用场景,包括正常关闭、异常关闭和强制关闭。通过具体示例和代码演示,帮助读者更好地理解和应用这一机制。适合对Java编程和JVM有一定基础的开发者阅读。 ... [详细]
  • 本文将带你快速了解 SpringMVC 框架的基本使用方法,通过实现一个简单的 Controller 并在浏览器中访问,展示 SpringMVC 的强大与简便。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • Unity与MySQL连接过程中出现的新挑战及解决方案探析 ... [详细]
  • 线程能否先以安全方式获取对象,再进行非安全发布? ... [详细]
  • 在本地环境中部署了两个不同版本的 Flink 集群,分别为 1.9.1 和 1.9.2。近期在尝试启动 1.9.1 版本的 Flink 任务时,遇到了 TaskExecutor 启动失败的问题。尽管 TaskManager 日志显示正常,但任务仍无法成功启动。经过详细分析,发现该问题是由 Kafka 版本不兼容引起的。通过调整 Kafka 客户端配置并升级相关依赖,最终成功解决了这一故障。 ... [详细]
  • Java测试服务器调试指南详细介绍了如何进行远程调试,并深入解析了Java Xdebug参数的使用方法。本文首先概述了Java内置的调试功能,重点介绍了JDB这一类似于GDB的强大调试工具。通过实例演示,读者可以掌握在测试环境中高效调试Java应用程序的技巧,包括配置远程调试环境和优化调试参数,以提高开发效率和代码质量。 ... [详细]
  • AIX编程挑战赛:AIX正方形问题的算法解析与Java代码实现
    在昨晚的阅读中,我注意到了CSDN博主西部阿呆-小草屋发表的一篇文章《AIX程序设计大赛——AIX正方形问题》。该文详细阐述了AIX正方形问题的背景,并提供了一种基于Java语言的解决方案。本文将深入解析这一算法的核心思想,并展示具体的Java代码实现,旨在为参赛者和编程爱好者提供有价值的参考。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 字节码开发笔记:深入解析与应用技巧 ... [详细]
  • 本文源自极分享,详细内容请参阅原文。技术债务如同信用卡负债,随着时间推移,修复成本会越来越高,因此程序员必须对此有深刻认识。此外,团队应致力于培养一种持续维护和优化代码的文化,以减少技术债务的累积。 ... [详细]
author-avatar
止在雲端_495
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有