RocketMq环境搭建

目录

MQ作用

RocketMQ背景

MQ对比

RocketMQ环境搭建

搭建dashboard可视化界面


MQ作用

  • 异步
  • 解耦
  • 削峰

RocketMQ背景

​ RocketMQ是阿里巴巴开源的一个消息中间件,在阿里内部历经了双十一等很多高并发场景的考验,能够处理亿万级别的消息。2016年开源后捐赠给Apache,现在是Apache的一个顶级项目。

​ 早期阿里使用ActiveMQ,但是,当消息开始逐渐增多后,ActiveMQ的IO性能很快达到了瓶颈。于是,阿里开始关注Kafka。但是Kafka是针对日志收集场景设计的,他的高级功能并不是很贴合阿里的业务场景。尤其当他的Topic过多时,由于Partition文件也会过多,这就会加大文件索引的耗时,会严重影响IO性能。于是阿里才决定自研中间件,最早叫做MetaQ,后来改名成为RocketMQ。最早他所希望解决的最大问题就是多Topic下的IO性能压力。但是产品在阿里内部的不断改进,RocketMQ开始体现出一些不一样的优势。

MQ对比

| 优点 | 缺点 | 适合场景 |
|-----------------|-------------------------------------------|----------------------|----------------|
| Apache Kafka | 吞吐量非常大,性能非常好,集群高可用。 | 会有丢数据的可能,功能比较单一 | 日志分析、大数据采集 |
| RabbitMQ | 消息可靠性高,功能全面。 | erlang语言不好定制。吞吐量比较低。 | 企业内部小规模服务调用 |
| Apache Pulsar | 基于Bookeeper构建,消息可靠性非常高。 | 周边生态还有差距,目前使用的公司比较少。 | 企业内部大规模服务调用 |
| Apache RocketMQ | 高吞吐、高性能、高可用。功能全面。客户端协议丰富。使用java语言开发,方便定制。 | 服务加载比较慢。 | 几乎全场景,特别适合金融场景 |

RocketMQ环境搭建

  1. 安装jdk环境,配置环境变量,jdk版本1.8
  1. 下载并解压rocketmq安装包,rmq版本4.9.5
  1. 由于虚拟机环境内存很小,而默认jvm内存配置太高, 调低内存(生产环境可不改)

a 修改bin/runbroker.sh文件

b 修改bin/runbroker.sh文件

  1. 设置broker自动创建topic,在conf/broker.conf加如下配置
cs 复制代码
autoCreateTopicEnable=true
  1. 设置环境变量NAMESRV_ADDR(非必须, 测试工具用)

通过vi ~/.bash_profile添加以下配置。然后使用source ~/.bash_profile让配置生效。

cs 复制代码
export NAMESRV_ADDR='localhost:9876' 
  1. 分别启动nameserver服务和broker服务
cs 复制代码
# 启动nameserver服务

nohup bin/mqnamesrv &

# 启动broker服务

nohup bin/mqbroker &

# 关闭nameserver服务

bin/mqshutdown namesrv

# 关闭broker服务

bin/mqshutdown broker

jps验证是否启动成功

  1. 自带tool工具测试发送&消费消息

a 发送消息

cs 复制代码
bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

b 消费消息

cs 复制代码
bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

搭建dashboard可视化界面

  1. 去官网下载dashboard源码

  2. 注释默认配置rocketmq.config.namesrvAddr, 后面可动态配置

  1. 添加解析yml的maven依赖, 不然启动报错
XML 复制代码
        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
            <version>1.27</version>
        </dependency>
  1. maven打包成jar包
cs 复制代码
mvn clean package -Dmaven.test.skip=true
  1. 把jar包拷贝到服务器, 并且在同级目录新建一个application.yml文件,配置namesrv地址

application.yml内容配置:

cs 复制代码
rocketmq.config.namesrvAddr: 192.168.6.128:9876
  1. java -jar启动jar包
cs 复制代码
java -jar rocketmq-dashboard-1.0.0.jar
  1. 访问dashboard界面
相关推荐
小范馆13 天前
RocketMQ面试题合集
java·rocketmq·java-rocketmq
莱特昂19 天前
K8S环境下验证RocketMQ扩缩容
kubernetes·rocketmq·java-rocketmq
阿维的博客日记21 天前
java八股-Redis Stream和RocketMQ实现的解决方案
java·java-rocketmq·redisstream
懒洋洋大魔王1 个月前
RocketMQ的使⽤
java·rocketmq·java-rocketmq
尽兴-1 个月前
Redis模拟延时队列 实现日程提醒
java·redis·java-rocketmq·mq
小沈同学呀2 个月前
Mac M1 Docker创建Rocketmq集群并接入Springboot项目
macos·docker·java-rocketmq·springboot
菜菜-plus2 个月前
微服务技术,SpringCloudAlibaba,Redis,RocketMQ,Docker,分库分表
java·spring boot·redis·spring cloud·docker·微服务·java-rocketmq
炭烤玛卡巴卡2 个月前
【MacOS】RocketMQ 搭建Java客户端
macos·rocketmq·java-rocketmq
莫凡的博客2 个月前
Java的RocketMQ使用
java·rocketmq·java-rocketmq
Hello Dam3 个月前
【RocketMQ】RocketMQ发送不同类型消息
java·rocketmq·java-rocketmq·springboot