前言:最近在做一下RabbitMq的demo例子。从安装 到 代码实践。但是总感觉空空,需要补充一下基础理论,然后在使用代码 应该就会很好结合,下次发代码demo,今天来理论。
1.什么是rabbitMQ (这里有一些定义是借用别的up主的感觉说的 举例挺好 就copy下来)
RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue 高级消息队列协议 )的开源实现,能够实现异步消息处理
RabbitMQ是一个消息代理:它接受和转发消息。
优点:
(1)异步消息处理,业务解耦(下订单操作:扣减库存、生成订单、发红包、发短信), 将下单操作主流程:扣减库存、生成订单然后通过MQ消息队列完成通知,发红包、发短信
(2)错峰流控 (通知量 消息量 订单量大的情况实现MQ消息队列机制,淡季情况下访问量会少)
(3)灵活的路由(Flexible Routing)
在消息进入队列之前,通过 Exchange 来路由消息的。对于典型的路由功能,RabbitMQ 已经提供了一些内置的 Exchange 来实现。针对更复杂的路由功能,可以将多个 Exchange 绑定在一起,也通过插件机制实现自己的 Exchange
(4)RabbitMQ网站端口号:15672
程序里面实现的端口:5672
2.queue队列
Queue(队列)RabbitMQ的作用是存储消息,队列的特性是先进先出。
生产者生产消息最终被送到RabbitMQ的内部对象Queue中去,
而消费者则是从Queue队列中取出数据。
3.消息队列
(1)消息(Message)是指在应用间传送的数据。消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。这里 我感觉 直接json字符串就行可以.
(2)消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,
由消息系统来确保消息的可靠传递。消息发布者只管把消息发布到 MQ 中而不用管谁来取,消息使用者只管从 MQ 中取消息而不管是谁发布的。这样发布者和使用者都不用知道对方的存在。
4.消息队列中间件:kafka rabbitMQ activeMQ rocketMQ(可以处理分布式事务)
5.个人语音总结一下吧:
(1)首先RabbitMQ是由ERLang语言设计的所以我们在安装的时候就像安装java语言JDK一样,安装完ERLang ,然后我们去下载RabbitMQ 服务程序,这样程序才能在我们的电脑上启动运行。下载以及安装过程我的第一篇文章提过了,感兴趣的可以简单看一下。
(2)在RabbitMQ中的我们总是提到 消息。消息的发送,消息的接收。
我们可以有消息队列:生产者生产消息发送到队列中。
订阅者可以实时订阅到队列里面传来的消息。
对于RabbitMq来说更是一个代理消息的对象。
(3)交换机的概念
在我实践的过程中,我发现队列可以绑定到交换机上。
大致的一个方向吧。说太多的理论感觉很容易懵。我们先浅显的了解一些,后期会加代码实践,在实践中我们在结合理论,那样我们在吸收的过程中应该会更明显。