RocketMQ_介绍以及基础入门

news2024/11/15 23:27:50

目录

一、什么是MQ

1、应用解耦

2、流量削峰

3、数据分发

二、MQ的优缺点

三、各种MQ产品的对比

四、RocketMQ快速入门(单机版本)


一、什么是MQ

在学习RocketMQ之前,我们先来了解什么是MQ,以及为什么要用MQ。MQ的英文全称是(Massage Queue),它是一种“先进先出”的数据结构。

它主要的应用场景有:

1、应用解耦

系统的耦合性越高,容错性就越低。以电商应用为例,用户创建订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个子系统出了故障或者因为升级等原因暂时不可用,都会造成下单操作异常,影响用户使用体验。

使用消息队列解耦合,系统的耦合性就会提高了。比如物流系统发生故障,需要几分钟才能来修复,在这段时间内,物流系统要处理的数据被缓存到消息队列中,用户的下单操作正常完成。当物流系统回复后,补充处理存在消息队列中的订单消息即可,终端系统感知不到物流系统发生过几分钟故障。

2、流量削峰

应用系统如果遇到系统请求流量的瞬间猛增,有可能会将系统压垮。有了消息队列可以将大量请求缓存起来,分散到很长一段时间处理,这样可以大大提高系统的稳定性和用户体验。

3、数据分发

通过消息队列可以让数据在多个系统更加之间进行流通。数据的产生方不需要关心谁来使用数据,只需要将数据发送到消息队列,数据使用方直接在消息队列中直接获取数据即可

二、MQ的优缺点

优点:解耦、削峰、数据分发

缺点包含以下几点

1、系统可用性降低

系统引入的外部依赖越多,系统稳定性越差。一旦MQ宕机,就会对业务造成影响。如何保证MQ的高可用?

2、系统复杂度提高

MQ的加入大大增加了系统的复杂度,以前系统间是同步的远程调用,现在是通过MQ进行异步调用。如何保证消息没有被重复消费?怎么处理消息丢失情况?那么保证消息传递的顺序性?

3、一致性问题

A系统处理完业务,通过MQ给B、C、D三个系统发消息数据,如果B系统、C系统处理成功,D系统处理失败。如何保证消息数据处理的一致性?

三、各种MQ产品的对比

目前市面上主流的MQ产品包括kafka、ActiveMQ、RocketMQ、RabbitMQ,相应比较信息如下:

四、RocketMQ快速入门(单机版本)

RocketMQ是阿里巴巴2016年MQ中间件,使用Java语言开发,在阿里内部,RocketMQ承接了例如“双11”等高并发场景的消息流转,能够处理万亿级别的消息。

1 下载RocketMQ

示例版本官方下载地址:

https://www.apache.org/dyn/closer.cgi?path=rocketmq/4.5.1/rocketmq-all-4.5.1-bin-release.zip

2 环境要求

Linux64位系统

JDK1.8(64位)

源码安装需要安装Maven 3.2.x

3 安装步骤

A、本教程以二进制包方式安装

1、解压安装包

2、进入安装目录

B、目录介绍

bin:启动脚本,包括shell脚本和CMD脚本

conf:实例配置文件 ,包括broker配置文件、logback配置文件等

lib:依赖jar包,包括Netty、commons-lang、FastJSON等

C、启动RocketMQ

1、启动NameServer

#启动NameServer

nohup sh bin/mqnamesrv &

#查看启动日志

tail -f ~/logs/rocketmqlogs/namesrv.log

2、启动Broker

#启动Broker

nohup sh bin/mqbroker -n localhost:9876 &

#查看启动日志

tail -f ~/logs/rocketmqlogs/broker.log

3、可能遇到的问题

RocketMQ默认的虚拟机内存较大,启动Broker如果因为内存不足失败,需要编辑如下两个配置文件,修改JVM内存大小

#编辑runbroker.shrunserver.sh修改默认JVM大小

vi runbroker.sh

vi runserver.sh

#参考设置

JAVA_OPT="${JAVA_OPT} -server -Xms256m -Xmx256m -Xmn128m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

4、测试RocketMQ

A、发送消息

#设置环境变量

export NAMESRV_ADDR=localhost:9876

#使用安装包的Demo发送消息

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Producer

B、接收消息

#设置环境变量

export NAMESRV_ADDR=localhost:9876

#接收消息

sh bin/tools.sh org.apache.rocketmq.example.quickstart.Consumer

C、关闭RocketMQ

#关闭NameServer

sh bin/mqshutdown namesrv

#关闭Broker

sh bin/mqshutdown broker

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/655809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023首届盘古石杯晋级赛复盘

晋级赛通排61,学生组39,折在大小写格式上的题太多了qaq 容器密码:usy1UN2Mmgram&^d?0E5r9myrk!cmJGr Android程序分析 1.涉案应用刷刷樂的签名序列号是(答案格式:123ca12a)(★☆☆☆☆) 11fcf899 雷电APP跑的时候前面加…

LeetCode 2481. 分割圆的最少切割次数

【LetMeFly】2481.分割圆的最少切割次数 力扣题目链接:https://leetcode.cn/problems/minimum-cuts-to-divide-a-circle/ 圆内一个 有效切割 ,符合以下二者之一: 该切割是两个端点在圆上的线段,且该线段经过圆心。该切割是一端…

【Flutter】Flutter 如何使用 flutter_swiper

文章目录 一、前言二、flutter_swiper 的概念三、Flutter 中的 flutter_swiper1. 使用的库2. 方法介绍 四、代码示例1. 简单示例2. 完整示例 五、总结 一、前言 在移动应用开发中,轮播图是一种常见的 UI 元素,它可以用来展示一系列的图片或者内容。在 F…

ACL 2023 | 利用思维链(CoT)推理隐式情感,狂涨50%

©PaperWeekly 原创 作者 | 费豪 单位 | 新加坡国立大学 题目: Reasoning Implicit Sentiment with Chain-of-Thought Prompting 作者: 费豪,李波波,刘乾,邴立东⁴,李霏,Chua Tat-Seng 新加…

聚观早报|青年失业率处在高位;滴滴租车在全国300个城市上线服务

今日要闻:青年失业率处在高位;滴滴租车在全国300个城市上线服务;特斯拉提供三个月免费充电服务;苹果新专利Apple Watch;甲骨文宣布裁员数百人 青年失业率处在高位 6 月 15 日,国新办举行 5 月份国民经济运…

signoz调研部署及log收集体验

这里是weihubeats,觉得文章不错可以关注公众号小奏技术,文章首发。拒绝营销号,拒绝标题党 背景 最近一直在调研监控、log收集,tracing相关的开源项目,以便使用。 前段时间一直调研使用的是skywalking。后来发现在log收集存储这一…

Ubuntu18编译内核源码,并调整版本号

​ 目标 下载ubuntu18 4.15.0-20-generic内核源码,默认情况下编译的内核版本会是4.15.17,我们需要调整版本号跟系统默认的一致,即4.15.0-20-generic 1 下载内核源码 sudo apt install linux-source-4.15.0 默认情况下,上面的…

苹果iOS 17新功能:iPhone激活Apple Watch铃声反向查找手表

苹果 Apple Watch 此前一直有查找 iPhone 的功能,用户可以点击表盘的电话图标(或者长按)来激活 iPhone 的铃声,从而找到附近的 iPhone 手机。 在最新的 iOS 17 测试版本中,苹果为 iPhone 也添加了这一功能的反向版本&a…

STM32速成笔记—串口通信

文章目录 一、什么是串口通讯二、串口通讯有什么用三、STM32的串口通信四、串口通信相关概念4.1 波特率4.2 全双工和半双工4.3 同步通信和异步通信 五、硬件连接六、串口通讯程序配置6.1 使能串口时钟和GPIO时钟6.2 初始化GPIO6.3 初始化串口参数6.4 使能串口6.5 串口接收中断6…

3ds MAX 多维材质

有的时候,我们想在一个图形中添加两个材质 比如我们绘制了一个球体,想要表示这是足球,但是没有黑白方块的贴图 除了绘制一个贴图外,我们可以用多维材质直接实现。 这里给茶壶对象的盖子和壶身设置两种贴图: 首先打…

MVI设计模式

一.各种框架对比 https://blog.csdn.net/qq_36390114/article/details/126160017 1. MVC(Model-View-Controller) 模型-视图-控制器 MVC的目的就是为了M和V代码分离,降低耦合性。 Model:数据来源,网络请求数据和数据…

DJ8-1 shell 的启动和终止、重定向、管道

目录 8.1 shell 的启动和终止 8.2 输入输出重定向 8.2.0 标准输入输出 8.2.1 输出重定向 > 8.2.2 输入重定向 < 8.2.3 常见输入输出重定向形式 8.2.4 标准错误输出重定向 8.3 管道 Linux 系统中的 shell 具有两大功能&#xff1a; 是一个命令解释器&…

express框架学习笔记

express简介 express是一个基于Node.js平台的极简的、灵活的WEB应用开发框架。express是一个封装好的工具包&#xff0c;封装了很多功能&#xff0c;便于我们开发WEB应用&#xff08;HTTP服务&#xff09; express使用 新建express文件夹新建文件test01.js&#xff0c;代码如…

特征点Features2D类介绍

文章目录 Features2D类介绍1. cv::AgastFeatureDetector2. cv::AKAZE3. cv::BRISK4. cv::FastFeatureDetector5. cv::GFTTDetector6. cv::KAZE7. cv::MSER8. cv::SimpleBlobDetector9. cv::StarDetector10. cv::SIFT11. cv::SURF12. cv::FastFeatureDetector13. cv::AgastFeatu…

leetcode2385. 感染二叉树需要的总时间(java)

感染二叉树需要的总时间 感染二叉树需要的总时间递归 dfs代码演示 二叉树专题 感染二叉树需要的总时间 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/amount-of-time-for-binary-tree-to-be-infected 给你一棵二叉树的…

每日一练 | 华为认证真题练习Day60

1、启用GRE的keepalive功能后&#xff0c;GRE隧道的本端会周期性的每10s向对端发送一次keepalive报文。 A. 对 B. 错 2、AAA协议是RADIUS协议。 A. 对 B. 错 3、路由器Radius信息配置如下&#xff1a;下列说法正确的有&#xff1f;&#xff08;多选&#xff09; A. 计费服务…

[Spring Cloud]:学习笔记·(一)

文章目录 摘要1 认识微服务1.1 单体架构与分布式架构1.2 分布式架构与微服务1.3 微服务架构 摘要 摘要&#xff1a;分布式&#xff1b;微服务&#xff1b;springcloud 1 认识微服务 1.1 单体架构与分布式架构 架构方式解释优点缺点单体架构将业务所有功能集中在一个项目中开…

java从入门到起飞(二)——运算符

目录 前提——运算符概念算数运算符注意事项&#xff1a;字符的“”操作字符串的“”操作 赋值运算符注意事项&#xff1a; 自增自减运算符注意事项&#xff1a; 关系运算符注意事项&#xff1a; 逻辑运算符短路逻辑运算符注意事项&#xff1a; 三元运算符计算规则&#xff1a;…

OpenCV Mat类

文章目录 Mat类Mat类数据类型读取Mat类支持的运算OpenCV Mat数据类型指针ptr的使用多维矩阵创建 Mat类 Mat类数据类型读取 S 有符号整型 U 无符号整型 F 浮点型CV_8U - 8位无符号整数&#xff08;0…255&#xff09;CV_8S - 8位有符号整数&#xff08;-128…127&#xff…

Python基础(1)——Python简介

Python基础&#xff08;1&#xff09;——Python简介 文章目录 Python基础&#xff08;1&#xff09;——Python简介目标Python介绍Python版本总结 目标 了解PythonPython的应用领域Python的版本 Python介绍 Python是时下最流行、最火爆的编程语言之一&#xff0c;具体原因如…