国产化-消息队列RocketMq(替代kafka)-单节点安装

RocketMQ 是一款由阿里巴巴开源的分布式消息中间件,具有高可靠、高性能、高可扩展性等特点,在众多企业级应用中得到了广泛的应用。以下是对 RocketMQ 的详细介绍:
 
国内三大IT巨头阿里、华为、腾讯出品必是精品

核心概念

  • 消息(Message):RocketMQ 中数据的基本单元,包含消息体、消息属性等信息。消息体是实际需要传输的数据,而消息属性可以用于对消息进行分类、过滤等操作。
  • 主题(Topic):消息的逻辑分类,用于区分不同类型的消息。生产者将消息发送到特定的主题,消费者则从感兴趣的主题中获取消息。
  • 队列(Queue):主题的物理分区,一个主题可以包含多个队列。队列用于实现消息的负载均衡和并行消费,提高消息处理的效率。
  • 生产者(Producer):负责创建并发送消息到 RocketMQ 服务器的应用程序。生产者可以根据业务需求选择不同的发送方式,如同步发送、异步发送和单向发送。
  • 消费者(Consumer):从 RocketMQ 服务器获取消息并进行处理的应用程序。消费者可以分为推模式和拉模式,推模式下,RocketMQ 主动将消息推送给消费者;拉模式下,消费者主动从服务器拉取消息。

特点

  • 高吞吐量:RocketMQ 采用了多种优化技术,如内存映射文件、零拷贝等,能够支持高并发的消息发送和接收,实现每秒数十万级的消息吞吐量。
  • 高可靠性:支持消息的持久化,将消息存储在磁盘上,以防止消息丢失。同时,RocketMQ 具有多副本机制,通过主从复制保证数据的可靠性和高可用性。
  • 分布式架构:RocketMQ 采用分布式的架构设计,能够轻松实现集群部署,支持水平扩展,以应对不断增长的业务流量。
  • 灵活的消息模型:支持多种消息模型,包括发布 / 订阅模型、点对点模型等,满足不同业务场景的需求。
  • 丰富的功能特性:提供了消息过滤、事务消息、顺序消息、定时消息等丰富的功能特性,方便开发者根据具体业务场景进行选择和使用。

安装环境:

环境:centos7.6  JDK 1.8+

 

1、压缩包解压
压缩包rocketmq-all-5.3.1-bin-release.zip放到/opt/RocketMQ

unzip rocketmq-all-5.3.1-bin-release.zip

 安装包获取方式:
(1)老虎网盘资源:http://resources.kittytiger.cn/
(2)搜索:RocketMq安装包
2、 启动NameServer
cd /opt/RocketMQ/rocketmq-all-5.3.1-bin-release/bin

# nohup sh mqnamesrv &
 
### 验证namesrv是否启动成功
$ tail -f ~/logs/rocketmqlogs/namesrv.log
The Name Server boot success...

注:日志地址/root/logs/rocketmqlogs/namesrv.log


3、启动Broker+Proxy
NameServer成功启动后,我们启动Broker和Proxy。这里我们使用 Local 模式部署,即 Broker 和 Proxy 同进程部署


### 先启动broker
cd /opt/RocketMQ/rocketmq-all-5.3.1-bin-release
 nohup sh bin/mqbroker -n localhost:9876 --enable-proxy &
 
 指定配置文件启动,要在conf下有acl文件夹,acl文件夹下要有acl.yml文件
 nohup sh bin/mqbroker -n localhost:9876 --enable-proxy -c /opt/RocketMQ/rocketmq-all-5.3.1-bin-release/conf/broker.conf &
 
默认的配置文件:/opt/RocketMQ/rocketmq-all-5.3.1-bin-release/conf/broker.conf  

### 验证broker是否启动成功,  
 tail -f ~/logs/rocketmqlogs/proxy.log
2025-03-24 11:46:32 INFO main - The broker[broker-a, 192.168.0.100:10911] boot success. serializeType=JSON and name server is localhost:9876
2025-03-24 11:46:32 INFO main - user specified name server address: localhost:9876
2025-03-24 11:46:32 INFO main - grpc server start successfully.
2025-03-24 11:46:32 INFO main - Mon Mar 24 11:46:32 CST 2025 rocketmq-proxy startup successfully

注:端口占用 lsof -i :10911


4、工具测试消息收发
在进行工具测试消息收发之前,我们需要告诉客户端NameServer的地址,RocketMQ有多种方式在客户端中设置NameServer地址,这里我们利用环境变量NAMESRV_ADDR
# export NAMESRV_ADDR=localhost:9876
# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
 SendResult [sendStatus=SEND_OK, msgId= ...

# sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer
 ConsumeMessageThread_%d Receive New Messages: [MessageExt...
 
 
5、关闭服务器

完成实验后,我们可以通过以下方式关闭服务
 
# sh bin/mqshutdown broker
The mqbroker(36695) is running...
Send shutdown request to mqbroker with proxy enable OK(36695)


# sh bin/mqshutdown namesrv
The mqnamesrv(36664) is running...
Send shutdown request to mqnamesrv(36664) OK



--操作
--topic
cd  /opt/RocketMQ/rocketmq-all-5.3.1-bin-release/bin
--建立一个TestTopic的topic
[root@minio2 bin]# sh mqadmin updateTopic -n 192.168.0.100:9876 -t TestTopic -c DefaultCluster -a +message.type=NORMAL
create topic to 192.168.0.100:10911 success.
TopicConfig [topicName=TestTopic, readQueueNums=8, writeQueueNums=8, perm=RW-, topicFilterType=SINGLE_TAG, topicSysFlag=0, order=false, attributes={+message.type=NORMAL}]

查看topic列表
sh mqadmin topicList -n 192.168.0.100:9876

posted @ 2025-05-12 19:33  万笑佛  阅读(315)  评论(0)    收藏  举报