什么是MQ?什么是RabbitMQ?能做什么?简单理解一下?
说明:想要理解RabbitMQ,需要先理解MQ是什么?能做什么?然后根据基础知识去理解RabbitMQ是什么、提供了什么功能 。
一、MQ的简单理解1. 什么是MQ?
- 消息队列(Message Queue),是基础数据结构中 “先进先出” 的一种数据结构 。
- 一般用来解决应用解耦、异步消息、流量削峰等问题,实现高性能、高可用、可伸缩和最终一致性架构 。
- 生产者产生消息并把传输的数据(消息)放在队列中,用队列机制来实现消息传递 。
- 消费者可以到指定的队列拉取消息,或者订阅相应的队列,由MQ服务端给其推送消息 。
- 解耦:一个业务需要多个模块共同实现,或一条消息有多个系统对应处理,只需要在主业务完成以后,发送一条MQ,其余模块消费MQ消息,即可实现业务,降低模块之间的耦合 。
- 异步:主业务执行结束后,从属业务通过MQ异步处理,减少业务的响应时间,提高用户体验 。
- 削峰:高并发情况下,业务异步处理,提供高峰期业务处理能力,避免系统瘫痪 。
- 系统可用性降低 。依赖服务越多,服务越容易挂掉 。需要考虑MQ瘫痪的情况 。
- 系统的复杂性提高 。需要考虑消息丢失、消息重复消费、消息传递的顺序性 。
- 业务一致性 。主业务和从属业务一致性的处理 。
- RabbitMQ可以理解为一个邮箱,或者一个邮局,或者是一个邮递员,保证 “张三” 的信件最终传递给 “李四” 。
- RabbitMQ与上述所描述的邮局(邮箱、邮递员)的主要区别在于它不处理纸张,而是接受、存储和转发二进制数据块消息 。
- 生产:生产只意味着发送 。发送消息的程序是生产者(production) 。
- 队列:队列是位于RabbitMQ中的“邮箱”的名称 。尽管消息流经RabbitMQ和应用程序,但他们只能存在于队列中 。队列只受主机的内存和磁盘限制,它的本质上是一个打的消息缓冲区 。许多生产者可以向一个队列发送消息,许多消费者可以尝试从一个队列接收数据 。
- 消费(接收):消费与接收具有相似的含义 。一个消费者(consumer)是一个程序,主要是等待接收信息 。

文章插图
三、RabbitMQ安装3.1环境说明(本文以RabbitMQ3.8.11为例)RabbitMQ对Erlang版本要求(Rabbit是基于Erlang编写的)

文章插图
RabbitMQ对JDK版本要求

文章插图
3.2 安装Erlang步骤(本文以windows版安装为例)3.2.1 下载Erlang,或访问如下链接进行下载:
http://erlang.org/download/otp_win64_23.2.exe
3.2.2 双击运行 otp_win64_23.2.exe ,点击下一步完成安装 。
3.2.3 安装完成后配置环境变量,如下图所示

文章插图

文章插图
3.2.4 运行窗口输入cmd,在dos窗口输入 erl,返回如图中所示,则代表erlang安装完成 。

文章插图
3.2 安装RibbitMQ步骤(本文以windows版安装为例)3.2.1 点击下载RibbitMQ,或访问如下链接进行下载:
https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.8.11/rabbitmq-server-3.8.11.exe
3.2.2 双击运行 rabbitmq-server-3.8.11.exe,点击下一步完成安装 。
3.2.3 双击RabbitMQ Service - start 运行RabbitMQ

文章插图
出现如下提示,则代表服务启动成功:

文章插图
3.2.4 访问RabbitMQ控制台
控制台地址:http://localhost:15672/
控制台用户名/密码 : guest/guest
四、RabbitMQ传递消息的方式(JAVA客户端)
- Work queues(工作队列)
- Publish/Subscribe(发布/订阅)
推荐阅读
- 盗墓笔记里的汪家人是什么来历 盗墓笔记里的汪家人到底是什么人啊
- 端午节吃什么传统美食 端午节要吃些什么
- 朱元璋和陈友谅兵力对比 陈友谅打洪都守将是
- 这可能是网上最全的 Docker 工具集合
- 六安瓜片是怎么来的,六安瓜片的存储方法
- 白纸板是什么,白茶是什么茶品种
- 500元以内什么蓝牙耳机好?五大性价比高的蓝牙耳机推荐
- 白茶是什么样的茶,什么样的翡翠好
- 摆擂台煮茶论英雄,煮茶适合什么环境
- 绿茶是红茶还是绿茶,如何根据体质季节喝茶