RocketMQ安装部署

本文详细介绍了如何在CentOS环境中安装和部署RocketMQ,比较了与其他消息队列中间件的区别,包括ApacheKafka和RabbitMQ,以及配置步骤、ACL设置和故障排查。
摘要由CSDN通过智能技术生成

RocketMQ安装部署

一、前言

1、常用的消息队列中间件有哪些

Apache Kafka、RabbitMQ、RocketMQ

2、不同消息中间件的对比

(1)Apache Kafka
#特点:
分布式、持久化的发布-订阅消息系统。
高吞吐量、低延迟。
支持水平扩展和数据持久化。
主要用于大数据流、日志收集、实时数据处理等场景。

#适用场景:
日志和事件数据的持久化和传输。
流式数据处理、实时数据分析。
构建实时数据管道。

#使用方法:
创建主题(Topic)来组织消息。
发布者(Producer)将消息发送到主题。
消费者(Consumer)订阅主题并接收消息。
可以使用 Kafka Connect 来连接其他系统,例如数据库、文件系统等。
(2)RabbitMQ
#特点:
开源的消息代理软件,实现了 AMQP(高级消息队列协议)。
支持多种消息协议,包括 AMQP、STOMP、MQTT 等。
灵活的消息路由和队列管理功能。
提供了丰富的插件系统,支持扩展和定制。

#适用场景:
异步消息传递、解耦系统组件。
工作队列、任务分发和处理。
RPC(远程过程调用)、事件驱动架构。

#使用方法:
创建队列(Queue)来存储消息。
发布者将消息发送到队列。
消费者从队列中获取消息并进行处理。
可以使用交换机(Exchange)来路由消息到不同的队列,以及设置路由规则。
(3)RocketMQ
#特点:
高吞吐量、低延迟的分布式消息中间件。
提供了丰富的消息模型,包括发布-订阅、点对点等。
支持事务消息和批量消息发送。
提供了丰富的监控和管理功能。

#适用场景:
异步消息传递、解耦系统组件。
分布式事务消息。
流式数据处理、实时消息分析。

#使用方法:
创建主题(Topic)来组织消息。
发布者(Producer)将消息发送到主题。
消费者(Consumer)订阅主题并接收消息。
提供了丰富的客户端 API 和控制台管理工具来管理和监控消息。
(4)小结
如果你需要处理大数据流,构建实时数据管道,Apache Kafka 是一个不错的选择。
如果你需要一种灵活、多协议支持的消息代理,或者需要实现任务队列、事件驱动等模式,可以考虑使用 RabbitMQ。
如果你在互联网应用、电商平台等领域需要高吞吐量、低延迟的消息中间件,并且需要支持分布式事务消息等高级特性,可以选择 RocketMQ。

二、部署环境及中间件版本

系统版本:CentOS Linux release 7.9.2009
maven版本:Apache Maven 3.0.5 (Red Hat 3.0.5-17)
java版本: 1.8.0_402
rocketmq版本:5.2.0

三、准备

1、关闭自带防火墙,用iptables

# 关闭SELinux
setenforce 0 
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

# 关闭Firewalld并禁止自启动
systemctl stop firewalld
systemctl disable firewalld

# 安装iptables
yum install -y iptables-services

# 启动iptables服务,并设置开机自启动(修改规则在/etc/sysconfig/iptables)
systemctl start iptables
systemctl enable iptables.service

2、时间同步

yum -y install ntp
systemctl enable ntpd
systemctl start ntpd
timedatectl set-timezone Asia/Shanghai
ntpdate -u time.nist.gov
date

3、创建安装包存放目录,并下载安装包

#1、创建安装包存放目录
mkdir -pv /server/tools
#2、下载安装包
wget https://dist.apache.org/repos/dist/release/rocketmq/5.2.0/rocketmq-all-5.2.0-bin-release.zip
wget https://dist.apache.org/repos/dist/release/rocketmq/rocketmq-dashboard/1.0.0/rocketmq-dashboard-1.0.0-source-release.zip

4、安装java服务

#如果要下载历史版本,可以去这个链接下面找(jdk-8u212-linux-x64.rpm)
#https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html
rpm -ivh jdk-8u212-linux-x64.rpm

四、安装部署RocketMQ

1、指定路径解压

cd /server/tools
unzip rocketmq-all-5.2.0-bin-release.zip -d /data

2、启动NameServer

#启动NameServer
cd /data/rocketmq-all-5.2.0-bin-release/bin
nohup sh mqnamesrv &
#查看日志
tail -f ~/logs/rocketmqlogs/namesrv.log
#检查进程(Namesrv)和端口(默认9876端口)
ps axu|grep Namesrv
ss -ntl|grep 9876

3、配置并启动Broker

(1) 修改配置文件broker.conf
#vim /data/rocketmq-all-5.2.0-bin-release/conf/broker.conf
#追加两行,指定brokerIP1(broker地址),namesrvAddr
brokerIP1=192.168.1.22
namesrvAddr=127.0.0.1:9876
(2) 启动Broker
#启动Broker
cd /data/rocketmq-all-5.2.0-bin-release/bin
#自动创建主题的功能,建议仅在测试环境使用,生产环境请勿打开,避免产生大量垃圾主题,无法管理和回收并浪费系统资源。
#nohup sh mqbroker -c ../conf/broker.conf -n 127.0.0.1:9876 autoCreateTopicEnable=true &
#nohup sh mqbroker -c ../conf/broker.conf -n 127.0.0.1:9876 &
nohup sh mqbroker -c ../conf/broker.conf -n localhost:9876 --enable-proxy &
#查看日志
tail -f ~/logs/rocketmqlogs/broker.log
#检查进程(broker)
ps aux|grep broker

注意:Broker在启动的过程中可能会存在由于堆空间初始值太大启动不起来的问题,需要调一下堆空间的初始值

解决方法:

cd /data/rocketmq-all-5.2.0-bin-release/bin
vim runbroker.sh
#87行,将4g改成1g(可根据情况自行修改)
#103行,将8g改成2g(可根据情况自行修改)

在这里插入图片描述

4、测试消息发送、接收

(1) 测试消息发送
export NAMESRV_ADDR=localhost:9876
sh ./tools.sh org.apache.rocketmq.example.quickstart.Producer
(2)测试消息接收
sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

5、创建主题、创建消费组

cd /data/rocketmq-all-5.2.0-bin-release/bin
#创建主题
#sh mqadmin updateTopic -n  -t <topic_name> -c <cluster_name> -a +message.type=<message_type>
sh mqadmin updateTopic -n 127.0.0.1:9876 -t test_normal -c DefaultCluster -a +message.type=NORMAL
sh mqadmin updateTopic -n 127.0.0.1:9876  -t test_delay -c DefaultCluster -a +message.type=DELAY
sh mqadmin updateTopic -n 127.0.0.1:9876  -t test_fifo -c DefaultCluster -a +message.type=FIFO
sh mqadmin updateTopic -n 127.0.0.1:9876  -t test_transaction -c DefaultCluster -a +message.type=TRANSACTION
#创建消费组
sh mqadmin updateSubGroup -n 127.0.0.1:9876 -c DefaultCluster -g test_fifo_group -s true

五、关闭RocketMQ

#关闭RocketMQ的时候,需要先关闭Broker,然后再关闭NameServer。
#关闭Broker
cd /data/rocketmq-all-5.2.0-bin-release/bin
sh ./mqshutdown broker
#关闭NameServer
cd /data/rocketmq-all-5.2.0-bin-release/bin
sh ./mqshutdown namesrv

六、安装RocketMQ的图形化界面(RocketMQ-Dashboard)

1、下载并解压缩

#下载地址:https://github.com/rocketmq/rocketmq-externals/tree/master
cd /server/tools
wget https://dist.apache.org/repos/dist/release/rocketmq/rocketmq-dashboard/1.0.0/rocketmq-dashboard-1.0.0-source-release.zip
#解压缩
unzip rocketmq-dashboard-1.0.0-source-release.zip -d /data

2、修改配置文件application.properties

#主要修改两个位置,一个位置是server.port=,另一个位置是rocketmq.config.namesrvAddr=
#server.port是配置服务的端口,rocketmq.config.namesrvAddr是配置namesrv服务的地址,修改rocketmq.config.dataPath
vim /data/rocketmq-externals-master/rocketmq-console/src/main/resources/application.properties
server.address=0.0.0.0
server.port=10080
spring.application.name=rocketmq-dashboard
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
logging.level.root=INFO
logging.config=classpath:logback.xml
rocketmq.config.namesrvAddr=127.0.0.1:9876
rocketmq.config.isVIPChannel=
rocketmq.config.timeoutMillis=
rocketmq.config.dataPath=/data/rocketmq-dashboard-1.0.0/src/main/resources
rocketmq.config.enableDashBoardCollect=true
rocketmq.config.msgTrackTopicName=
rocketmq.config.ticketKey=ticket
rocketmq.config.loginRequired=false
rocketmq.config.useTLS=false

3、安装maven,并进行打包

#安装maven
yum install maven -y
#配置阿里云的maven源(在配置文件的<mirrors></mirrors>中添加阿里云公共仓库,即下面这段)
vim /etc/maven/settings.xml
  <mirrors>
    <mirror>
      <id>aliyunmaven</id>
      <mirrorOf>*</mirrorOf>
      <name>阿里云公共仓库</name>
      <url>https://maven.aliyun.com/repository/public</url>
    </mirror>

  </mirrors>
#打包
cd /data/rocketmq-externals-master/rocketmq-console
mvn clean package -Dmaven.test.skip=true

4、运行jar包,防火墙放行10080端口

#运行jar包
cd /data/rocketmq-dashboard-1.0.0/target
nohup java -jar rocketmq-dashboard-1.0.0.jar 2>&1 &
#检查服务端口
ss -ntl|grep 10080
#防火墙放行8080端口
-A INPUT -p tcp -m tcp --dport 10080 -j ACCEPT
#重启防火墙
systemctl restart iptables

5、访问网站验证

http://192.168.1.22:10080

七、设置密码

在这里插入图片描述

1、设置RabbitMQ账号密码

(1)开启broker的acl控制
#在broker.conf文件中追加aclEnable=true
#vim /data/rocketmq-5.2.0/conf/broker.conf
brokerClusterName = DefaultCluster
brokerName = broker-a
brokerId = 0
deleteWhen = 04
fileReservedTime = 48
brokerRole = ASYNC_MASTER
flushDiskType = ASYNC_FLUSH
brokerIP1=192.168.1.22
namesrvAddr=127.0.0.1:9876
#开启acl
aclEnable=true
(2)创建acl目录,配置plain_acl.yml文件
#创建acl目录
mkdir -pv  /data/rocketmq-5.2.0/conf/acl
cd /data/rocketmq-5.2.0/conf/acl
cp ../plain_acl.yml 
#修改plain_acl.yml的配置
#1、将白名单地址都去掉
#2、修改配置文件中默认的accessKey和secretKey。(注意:如果想在你所在的网段不用账号密码,可以添加在globalWhiteRemoteAddresses或whiteRemoteAddress中)

#vim /data/rocketmq-5.1.3/conf/acl/plain_acl.yml
globalWhiteRemoteAddresses:
  #- 10.10.103.*
  #- 192.168.0.*

accounts:
  - accessKey: RocketMQ
    secretKey: 自定义密码
    whiteRemoteAddress:
    admin: false
    defaultTopicPerm: DENY
    defaultGroupPerm: SUB
    topicPerms:
      - topicA=DENY
      - topicB=PUB|SUB
      - topicC=SUB
    groupPerms:
      # the group should convert to retry topic
      - groupA=DENY
      - groupB=PUB|SUB
      - groupC=SUB

  - accessKey: 自定义
    secretKey: 自定义
    #whiteRemoteAddress: 192.168.0.*
    # if it is admin, it could access all resources
    admin: true

#重启NameServer和Broker

2、配置RocketMQ-Dashboard账号密码

#修改rocketmq-dashboard配置文件application.properties
cd /data/rocketmq-dashboard-1.0.0/src/main/resources
sed -i s/rocketmq.config.loginRequired=false/rocketmq.config.loginRequired=true/g application.properties
sed -i s/rocketmq.config.accessKey=/rocketmq.config.accessKey=和plain_acl的密码一致/g application.properties
sed -i s/rocketmq.config.secretKey=/rocketmq.config.secretKey=和plain_acl的密码一致/g application.properties
#配置用户账号密码,修改users.properties配置文件(暂时先保留admin用户,其他的默认用户全部注释掉)
vim users.properties
admin=自定义密码,1
#重启RocketMQ-Dashboard

八、开发调用端口

#修改配置文件rmq-proxy.json(开发调用的端口是8081)
	#namesrvAddr:NameServer地址,分号分割;
	#proxyMode:cluster模式;
	#rocketMQClusterName:目标broker集群名称(proxy是集群级别的);
	#remotingListenPort:remoting协议端口,默认8080;
	#grpcServerPort:grpc协议端口,默认8081;
	#useEndpointPortFromRequest:查询路由,是否使用入参endpoint端点的端口;
	#enableACL:是否开启acl(client和proxy之间);
#vim /data/rocketmq-5.1.3/conf/rmq-proxy.json
{
  "namesrvAddr": "127.0.0.1:9876",
  "proxyMode": "cluster",
  "rocketMQClusterName": "DefaultCluster",
  "remotingListenPort": 8080,
  "grpcServerPort": 8081,
  "useEndpointPortFromRequest": true,
  "enableACL": true
}
#重启NameServer和Broker

九、FAQ

问题:

#命令创建消费者报错
#./mqadmin updateSubGroup -n 127.0.0.1:9876 -g TestConsume -b 127.0.0.1:10911
Caused by: org.apache.rocketmq.client.exception.MQClientException: CODE: 1  DESC: org.apache.rocketmq.acl.common.AclException: No acl config for rocketmq2, org.apache.rocketmq.acl.plain.PlainPermissionManager.validate(PlainPermissionManager.java:613)
#解决:
#mqadmin的授权配置在conf/tools.yml下,这里面的配置要与plain_acl.yml文件中的一致
vim /data/rocketmq-5.1.3/conf/tools.yml 
accessKey: admin123
secretKey: admin123
### 回答1: Linux RocketMQ安装部署可以分为以下几个步骤: 1. 下载RocketMQ安装包,可以从官网或者GitHub上下载。 2. 解压安装包,可以使用tar命令进行解压。 3. 配置环境变量,将RocketMQ的bin目录添加到PATH环境变量中。 4. 配置RocketMQ的配置文件,包括namesrv和broker的配置文件。 5. 启动namesrv和broker,可以使用nohup命令将其作为后台进程运行。 6. 验证RocketMQ是否正常运行,可以使用命令行工具或者RocketMQ的Web控制台进行验证。 需要注意的是,在配置RocketMQ的配置文件时,需要根据实际情况进行配置,包括监听端口、存储路径、集群配置等。同时,在启动namesrv和broker时,也需要注意日志输出路径和日志级别的配置,以便于后续的问题排查和监控。 ### 回答2: RocketMQ是阿里巴巴开源的分布式消息队列系统,它具有高扩展性、高可用性和高性能,广泛应用于各种分布式系统中。本文将介绍在Linux系统中如何安装部署RocketMQ。 1. 准备工作 在安装之前,需要准备好以下工具和环境: - JDK:要求JDK1.8及以上版本; - Maven:用于编译和打包RocketMQ源代码; - Git:用于下载和更新RocketMQ源代码; - CMake:用于构建RocketMQ Server和Client的C++代码; - 压缩工具:用于解压RocketMQ安装包。 2. 下载和编译源代码 在Linux系统中,使用以下命令下载和编译RocketMQ源代码: $ git clone https://github.com/apache/rocketmq.git $ cd rocketmq/ $ mvn -Prelease-all -DskipTests clean install -U 以上命令将下载RocketMQ源代码,并使用Maven编译和打包。编译完成后,在target目录下将生成如下文件: - bin目录:包含了rocketmq的启动脚本和配置文件; - conf目录:包含了rocketmq的配置文件; - distribution目录:包含了rocketmq的二进制文件和压缩包; - distribution/target目录:包含了rocketmq的编译结果。 3. 安装部署 安装部署RocketMQ需要进行以下步骤: 1. 下载和解压RocketMQ安装包 $ wget https://archive.apache.org/dist/rocketmq/4.9.0/rocketmq-all-4.9.0-bin-release.zip $ unzip rocketmq-all-4.9.0-bin-release.zip 2. 配置环境变量 $ export ROCKETMQ_HOME=/path/to/rocketmq-all-4.9.0-bin-release $ export PATH=$PATH:$ROCKETMQ_HOME/bin 3. 修改配置文件 RocketMQ的配置文件在conf目录下,包括broker.conf、namesrv.conf和logback_broker.xml等文件。可以根据实际需要进行修改。 4. 启动RocketMQ 启动NameServer: $ nohup sh bin/mqnamesrv & 启动Broker: $ nohup sh bin/mqbroker -n localhost:9876 & 以上命令将在后台启动NameServer和Broker。如果需要停止NameServer和Broker,可以使用以下命令: 停止NameServer: $ sh bin/mqshutdown namesrv 停止Broker: $ sh bin/mqshutdown broker 5. 测试RocketMQ 在启动RocketMQ后,可以使用RocketMQ的Java或C++ Client进行消息发送和消费的测试。例如,在Java Client中,可以使用以下代码发送和消费消息: public class ProducerTest { public static void main(String[] args) throws Exception { // 实例化生产者 DefaultMQProducer producer = new DefaultMQProducer("test-group"); // 设置NameServer地址 producer.setNamesrvAddr("localhost:9876"); // 启动生产者 producer.start(); // 发送消息 Message message = new Message( "test-topic", "test-tag", "Hello RocketMQ".getBytes(StandardCharsets.UTF_8) ); SendResult result = producer.send(message); System.out.println(result); // 关闭生产者 producer.shutdown(); } } public class ConsumerTest { public static void main(String[] args) throws Exception { // 实例化消费者 DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("test-group"); // 设置NameServer地址 consumer.setNamesrvAddr("localhost:9876"); // 订阅主题和标签 consumer.subscribe("test-topic", "test-tag"); // 注册消息监听器 consumer.registerMessageListener((MessageListenerConcurrently) (msgs, ctx) -> { for (MessageExt msg : msgs) { System.out.println(new String(msg.getBody())); } return ConsumeConcurrentlyStatus.CONSUME_SUCCESS; }); // 启动消费者 consumer.start(); } } 以上代码将发送和消费一条消息。可以根据实际需要进行修改,测试消息发送和消费的功能。 总结 本文介绍了在Linux系统中安装部署RocketMQ的步骤,包括下载和编译源代码、配置环境变量、修改配置文件、启动和停止RocketMQ以及测试RocketMQ的功能。RocketMQ是一款高性能、高可用性的分布式消息队列,应用广泛,具有较好的扩展性和稳定性。 ### 回答3: RocketMQ是一个分布式的消息中间件,具有高性能、高可靠、高可用等特点。在使用RocketMQ的过程中,需要对其进行安装部署。本文将介绍如何在Linux系统上安装部署RocketMQ。 一、环境准备 在开始安装RocketMQ之前,需要先安装Java环境,如果已经安装可以跳过此步骤。 1. 安装Java 在Linux系统上安装Java的方法有很多种,这里介绍通过yum安装的方式。 ``` bash # 安装JDK yum install java-1.8.0-openjdk-devel.x86_64 -y ``` 安装完成后可以通过以下命令查看Java版本号 ```bash java -version ``` 如果正常输出则表示Java环境已经安装成功。 2. 安装RocketMQ RocketMQ官网提供了两种安装方式:二进制文件包和源码包。在此以二进制文件包的方式进行安装。 1. 下载RocketMQ 进入RocketMQ官网[http://rocketmq.apache.org/]下载页面, 下载最新版本的RocketMQ。选择一个版本并下载对应操作系统的二进制文件。 2. 解压文件 将下载的二进制文件解压到指定的目录。 ```bash tar -zxvf rocketmq-all-4.8.0-bin-release.tar.gz ``` 解压后将得到“rocketmq-all-4.8.0”的目录。 3. 配置环境变量 为了方便使用RocketMQ,需要将其添加到系统环境变量中,在终端中执行以下命令: ```bash # 配置环境变量 echo "export ROCKETMQ_HOME=`pwd`/rocketmq-all-4.8.0" >> ~/.bashrc echo "export PATH=$ROCKETMQ_HOME/bin:$PATH" >> ~/.bashrc ``` 4. 启动NameServer RocketMQ依赖于NameServer来管理主题和路由信息。在启动Broker之前,需要先启动NameServer。进入RocketMQ安装目录,执行如下命令: ```bash cd rocketmq-all-4.8.0 nohup sh bin/mqnamesrv & ``` 5. 启动Broker 启动Broker之前,需要在broker.conf配置文件中指定NameServer的地址,配置文件路径为: ```bash $ROCKETMQ_HOME/conf/broker.conf ``` 在终端中执行以下命令启动Broker: ```bash cd $ROCKETMQ_HOME nohup sh bin/mqbroker -n localhost:9876 & ``` 注意:启动Broker前,需要先启动NameServer。 到此,RocketMQ安装部署就完成了,可以使用RocketMQ的相关功能进行开发和测试。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值