这里写自定义目录标题

  • 快速使用rocketmq
    • rocketmq介绍
    • 快速理解原理
    • 单机使用rocketmq

快速使用rocketmq

rocketmq介绍

MQ,Message Queue,是一种提供消息队列服务的中间件,也称为消息中间件,是一套提供了消息生产、存储、消费全过程API的软件系统。消息即数据。一般消息的体量不会很大。
一.MQ的用途
1.限流削峰:当数据库Mysql一秒钟仅能承受2000个请求的同时,当前系统收到了5000个请求都需要mysql处理,此时mysql会被系统压垮,处理不了巨额请求。MQ可以作为中间的“加一层”。让系统后续慢慢处理。

2.异步解耦:在一个电商系统中,当用户点击下单的时候,请求传递到订单账户,当订单账户生成就应该返回给用户您下单成功,而后续工作应该放入MQ中让MQ去申请更改数据库,库存和账户等信息。这就将原来的同步系统结构改为异步系统结构。

3.数据收集:分布式系统会产生海量级数据流,如:业务日志、监控数据、用户行为等。针对这些数据流进行实时或批量采集汇总,然后对这些数据流进行大数据分析,这是当前互联网平台的必备技术。通过MQ完成此类数据收集是最好的选择。

快速理解原理


所有组件producer,consumer,broker都需要在namserver上进行注册,producer,和comuser都是通过nameserver取拉去broker上面的信息,一个是发送消息一个是接受消息。

工作流程

①启动NameServer,NameServer启动后开始监听端口,等待Broker、Producer、Consumer连接。

②broker启动(优先于生产者,消费者,这个是当然的因为代码中我们要写生产者和消费者),启动完要去nameserver进行一个注册(因为nameserver是无状态,需要broker配置注册上去),Broker会与所有的NameServer建立并保持长连接,然后每30秒向NameServer定时
发送心跳包。
broker告诉nameserver我这个broker负责哪些topic(Topic分片知识),就是broker会告诉nameserverbroker的ip负责的topic(topic可以手动创建也可以自动创建),有多少个queue,这个queue就是我们消息队列中真正存放消息的queue。

②Producer发送消息,启动时先跟NameServer集群中的其中一台建立长连接,此时producer发现nameserver上有一个broker1,负责topicA,queue1和queue2,此时当我们producer想要投递一条topicA主题的消息的时候,就知道producer应该往broker1中去投递。Broker1中有两个queue,我们可以采用负载轮询的方式,producer就会将masg1放入queue1,将msg2放入queue2,慢慢的就会把这两个queue补满。当然,在获取到路由信息后,Producer会首先将路由信息缓存到本地,再每30秒从NameServer更新一次路由信息。

③此时我们的consumer也启动了,跟其中一台NameServer建立长连接,同样也需要从nameserver中取抓取信息,抓取信息是以topic为单位抓取的,所以它是取抓取topicA的信息,此时nameserver就告诉consumer,broker1负责你的要的topicA,而且它有两个queue,此时consumer就消费这些queue,(如果采取拉取方式,这种实时性不高,还可以采用推送方式,让broker主动推送给consumser)。
Consumer在获取到路由信息后,同样也会每30秒从NameServer更新一次路由信息。不过不同于Producer的是,Consumer还会向Broker发送心跳,以确保Broker的存活状态。


有几点需要注意:
一个broker中的queue只能被一个consumer消费集群中的一个消费者对应,但是一个消费者可以对应多个broker中的queue。
nameserver是无状态的,如果想要broker感知到必须在broker的配置文件中添加这个nameserver信息才算注册成功。

单机使用rocketmq

window版本使用(不推荐)
1.在rocketmq官网下载一下对应的文件:https://rocketmq.apache.org/download

2.下载之后解压。
3.配置window环境变量(配置rocketmq所在文件的路径)

4.启动nameserver
在文件的/bin目录下输入cmd

然后输入命令开启nameserver

start mqnamesrv.cmd

当跳出来一个新窗口显示这样代表已经成功了

5.启动broker
一下命令-n连接ip和端口 autoCreateTopicEnable自动创建topic指令

start mqbroker.cmd -n 127.0.0.1:9876 autoCreateTopicEnable=true

出现这样已经成功了

linux版本使用(推荐)

使用rocketmq中明确规定要求cenos上的JDK版本在1.8以上。
查看自己在环境变量中的java版本echo $JAVA_HOME

如果有没安装的可以去官网安装一下:https://www.oracle.com/java/technologies/downloads/
更改cenos中的环境变量vim /etc/profile
配置成你自己的解压的java目录就可以了。

去rocketmq的官网下载:https://rocketmq.apache.org/download/

然后进行解压安装,解压命令tar zxvf 文件名.tgz-C

解压后需要配置两个配置文件(因为rocketmq启动要求内存太大了我们要启动不必要那么大的内存所以可以将启动内存设置小一些)

修改图中的runserver.sh和runbroker.sh文件。

将JAVA_OPT的三项修改为-Xms256m -Xmx256m -Xmn128m。

rocketmq启动
通过官方文档的快速开启:https://rocketmq.apache.org/docs/4.x/%E4%BB%8B%E7%BB%8D/02quickstart
启动NameServer命令

nohup sh bin/mqnamesrv &
启动nameserver
tail -f  ~/logs/rocketmqlogs/namesrv.log
查看日志,如果日志提醒路径错误,可以先用命令mkdir建立路径

同理启动boker命令

nohup sh bin/mqbroker -n localhost:9876 &
tail -f ~/logs/rocketmqlogs/broker.log

消息收发测试

收
$ export NAMESRV_ADDR=localhost:9876
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer
发
$ sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

关闭rocketmq

$ sh bin/mqshutdown broker
$ sh bin/mqshutdown namesrv

阿里云启动方式
首先将broker.conf更改

cd confvim broker.conf

对应添加

namesrvAddr=39.104.21.189:9876
brokerIP1=39.104.21.189

启动

nohup sh bin/mqnamesrv -n 39.xx.xx.xxx:9876 &
nohup sh bin/mqbroker -n 39.xx.xx.xxx:9876 -c conf/broker.conf autoCreateTopicEnable=true &

快速使用rocketmq相关推荐

  1. 让读者快速了解RocketMQ消息中间件需要解决哪些问题

    让读者快速了解RocketMQ消息中间件需要解决哪些问题 参考文章: (1)让读者快速了解RocketMQ消息中间件需要解决哪些问题 (2)https://www.cnblogs.com/tiansh ...

  2. SpringBoot2.x系列教程(六十六)Spring Boot快速集成RocketMQ实战教程

    前言 RocketMQ是目前主流的消息中间件之一,并且自身就支持分布式功能.最初由阿里巴巴团队开发,并且经历过双十一等海量消息场景的考验,后捐赠给Apache开源基金会,这也是为什么我们经常听说Roc ...

  3. RocketMQ带你快速入门

    1. MQ介绍 ##1.1 为什么要用MQ 消息队列是一种"先进先出"的数据结构 转存失败重新上传取消 其应用场景主要包含以下3个方面 应用解耦 系统的耦合性越高,容错性就越低.以 ...

  4. RocketMQ一:快速入门和集群架构

    文章目录 RocketMQ快速实战和集群架构 RocketMQ快速实战 下载安装 快速运行RocketMQ RocketMQ集群架构 配置RocketMQ主从集群 搭建管理控制台 RocketMQ消息 ...

  5. 高并发:RocketMQ 削峰实战

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 转自:WilsonHe 链接:juejin.im/post/5ea ...

  6. 高并发:RocketMQ 削峰实战!

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 本文来源: https://juejin.im/post/5ea1 ...

  7. 实战:RocketMQ削峰,这一篇就够了

    前言 MQ的主要特点为解耦.异步.削峰,该文章主要记录与分享个人在实际项目中的RocketMQ削峰用法,用于减少数据库压力的业务场景,其中RocketMQ的核心组件概念如下: Producer:生产发 ...

  8. 十分钟入门 RocketMQ

    作者 | 尘央 来源 | https://developer.aliyun.com/article/66101 本文首先引出消息中间件通常需要解决哪些问题,在解决这些问题当中会遇到什么困难,Apach ...

  9. RocketMQ削峰

    MQ的主要特点为解耦.异步.削峰,该文章主要记录与分享个人在实际项目中的RocketMQ削峰用法,用于减少数据库压力的业务场景,其中RocketMQ的核心组件概念如下: Producer:生产发送消息 ...

最新文章

  1. Rsync服务让SLB下多台centos服务器文件同步更新
  2. 合同模板布局html,套打模板制作(合同类模板)
  3. No enclosing instance of type JDStudent is acAcessible. Must qualify the allocation with an enclosin
  4. editor.md国产markdown编辑器使用实例
  5. Windows Print Spooler 远程代码执行漏洞(CVE-2021-1675)
  6. 【jQuery笔记Part4】04-jQuery案例-轮播图
  7. 谷歌排名第一的编程语言,死磕这点应用,小白也能转型!
  8. linux系统与linux内核,[科普] Linux 的内核与 Linux 系统之间的关系
  9. js面向对象的程序设计 --- 上篇(理解对象)
  10. 在Chrome中禁用同一来源政策
  11. MfC基础--绘图基础--win32
  12. 智能美观网速快 有这样的无线路由吗?
  13. grasshopper python_【转】精华教学 | GH_Cpython——将原生的 Python 与机器学习框架引入Grasshopper...
  14. MATLAB 使用 loglog semilogy 不显示对数坐标
  15. 【转载】Web前端框架图
  16. 微信小程序实现微信企业付款到零钱功能的流程
  17. ionic组件-Slides轮播图
  18. 简单个人简历背景模板
  19. 目标检测(四):SSD之Pytorch源码解读
  20. AGV路径规划方法——A*算法

热门文章

  1. reduce的介绍及用法
  2. ADB Fastboot Recovery Hboot Bootloader介绍
  3. Java File类型文件无法删除(可能的解决办法)
  4. xp系统修改mac地址
  5. 虚幻引擎(UE4)编辑器窗口快捷键整理
  6. window10安装后的几项必要设置-减少日后麻烦
  7. 03 Wireshark DNS
  8. mapreduce应用-找出扣扣共同好友
  9. C++控制台白底黑字
  10. Web标准的简单理解