RocketMQ快速入门 1

简介: RocketMQ快速入门

1. MQ简介

1.1 项目工程弊端

1.2 MQ简介

  1. MQ(Message Queue)消息队列,是一种用来保存消息数据的队列.
  1. 队列:数据结构的一种,特征为 “先进先出”

  1. 何为消息
  1. 服务器间的业务请求
  1. 原始架构:
  1. 服务器中的A功能需要调用B、C模块才能完成
  1. 微服务架构:
  1. 服务器A向服务器B发送要执行的操作(视为消息)
  2. 服务器A向服务器C发送要执行的操作(视为消息)
  1. 小节:MQ概念

1.3 MQ作用

` 1. 应用解耦

2. 快速应用变更维护
3. 流量削锋

1.4 MQ基本工作模式

应用解耦:(异步消息发送)

快速应用变更维护:(异步消息发送)

流量削锋:(异步消息发送)

1.5 MQ优缺点分析

优点(作用):

  1. 应用解耦
  2. 快速应用变更维护
  3. 流量削锋

缺点:

1. 系统可用性降低
2. 系统复杂度提高
3. 异步消息机制
    1. 消息顺序性
    2. 消息丢失
    3. 消息一致性
    4. 消息重复使用

1.6 MQ产品介绍

  1. ActiveMQ
  1. java语言实现,万级数据吞吐量,处理速度ms级,主从架构,成熟度高
  1. RabbitMQ
  1. erlang语言实现,万级数据吞吐量,处理速度us级,主从架构,
  1. RocketMQ
  1. java语言实现,十万级数据吞吐量,处理速度ms级,分布式架构,功能强大,扩展性强
  1. kafka
  1. scala语言实现,十万级数据吞吐量,处理速度ms级,分布式架构,功能较少,应用于大数据较多

RocketMQ

RocketMQ是阿里开源的一款非常优秀中间件产品,脱胎于阿里的另一款队列技术MetaQ,后捐赠给Apache基金会 作为一款孵化技术,仅仅经历了一年多的时间就成为Apache基金会的顶级项目。并且它现在已经在阿里内部被广泛 的应用,并且经受住了多次双十一的这种极致场景的压力(2017年的双十一,RocketMQ流转的消息量达到了万亿 级,峰值TPS达到5600万)

  1. 解决所有缺点

幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果成功,用户查询余额发现多扣钱了,流水记录也变成了两条。在以前的单应用系统中,我们只需要把数据操作放入事务中即可,发生错误立即回滚,但是再响应客户端的时候也有可能出现网络中断或者异常等等。


在增删改查4个操作中,尤为注意就是增加或者修改,查询对于结果是不会有改变的,删除只会进行一次,用户多次点击产生的结果一样,修改在大多场景下结果一样,增加在重复提交的场景下会出现。

2. 环境搭建

2.1 基础概念

两边生产者消费者都会去找命名服务器,之后找到broke,信息生产者会推送消息,消费者会拉取监听器监听队列之后消费消息.

  1. 生产者
  2. 消费者
  3. 消息服务器
  4. 命名服务器
  5. 消息
  1. 主题
  2. 标签
  1. 心跳
  2. 监听器
  3. 拉取消费、推动消费
  4. 注册

2.2 安装

  1. 命名服务器
  2. 消息服务器

2.3 下载

https://www.apache.org/

2.4 安装过程

  1. 步骤1:安装JDK(1.8)
  2. 步骤2:上传压缩包(zip)
yum -y install lrzsz 
rz
  1. 步骤3:解压缩
unzip rocketmq-all-4.5.2-bin-release.zip
  1. 步骤4:修改目录名称
mv rocketmq-all-4.5.2-bin-release rocketmq

2.5 启动服务器

  1. 步骤1:启动命名服务器(bin目录下)
sh mqnamesrv
  1. 步骤2:启动消息服务器(bin目录下)
sh mqbroker -n localhost:9876

修改runbroker.sh文件中有关内存的配置(调整的与当前虚拟机内存匹配即可,推荐256m-128m)

2.6 测试服务器环境

  1. 步骤1:配置命名服务器地址
export NAMESRV_ADDR=localhost:9876
  1. 步骤2:启动生产者程序客户端(bin目录下)
sh tools.sh org.apache.rocketmq.example.quickstart.Producer

启动后产生大量日志信息(注意该信息是测试程序中自带的,不具有通用性,仅供学习查阅参考)

  1. 步骤3:启动消费者程序客户端(bin目录下)
sh tools.sh org.apache.rocketmq.example.quickstart.Consumer

启动后产生大量日志信息


相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
6月前
|
消息中间件 Java 测试技术
快速入门RabbitMQ并且加入项目实战-kuai-su-ru-men-rabbitmq-bing-qie-jia-ru-xiang-mu-shi-zhan(二)
快速入门RabbitMQ并且加入项目实战-kuai-su-ru-men-rabbitmq-bing-qie-jia-ru-xiang-mu-shi-zhan
131 1
|
6月前
|
消息中间件 运维 Java
RabbitMQ快速入门(简单收发消息)
RabbitMQ快速入门(简单收发消息)
101 0
RabbitMQ快速入门(简单收发消息)
|
6月前
|
消息中间件 存储 Java
RabbitMQ-同步和异步区别&快速入门
RabbitMQ-同步和异步区别&快速入门
191 1
|
6月前
|
消息中间件 Java Docker
快速入门RabbitMQ并且加入项目实战-kuai-su-ru-men-rabbitmq-bing-qie-jia-ru-xiang-mu-shi-zhan(一)
快速入门RabbitMQ并且加入项目实战-kuai-su-ru-men-rabbitmq-bing-qie-jia-ru-xiang-mu-shi-zhan
80 1
|
6月前
|
消息中间件 Java Kafka
【RabbitMQ】RabbitMQ快速入门 通俗易懂 初学者入门
【RabbitMQ】RabbitMQ快速入门 通俗易懂 初学者入门
141 0
|
消息中间件 SQL 负载均衡
RocketMQ快速入门 2
RocketMQ快速入门
198 0
|
消息中间件 Java Spring
RabbitMQ快速入门 3
RabbitMQ快速入门
52 0
|
消息中间件 存储 缓存
RabbitMQ快速入门 2
RabbitMQ快速入门
49 0
|
消息中间件 缓存 Java
RabbitMQ快速入门 1
RabbitMQ快速入门
155 0
|
消息中间件 网络协议 Java
RabbitMQ消息中间件学习3:快速入门案例
rabbitmq是spring一个公司的,所以很多公司 企业选择用rabbitmq。
RabbitMQ消息中间件学习3:快速入门案例
下一篇
无影云桌面