RabbitMQ详解 原理解析

在这里插入图片描述
学习过前端的同学可能知道,这两行代码的是自上而下执行的,但必须是短信发送成功页面才开始倒计时,但如果当前网速不好,短信也就会被阻塞,那么倒计时也就会延迟。这样在实际使用中用户体验是不是很不好呢?

生产者消费者设计模式

要解决这个问题,我先介绍一下生产者消费者设计模式,那什么是生产者消费者设计模式呢?
生产者消费者问题是线程模型中的经典问题:生产者和消费者在同一时间段内共用同一存储空间,生产者向空间里生产数据,而消费者取走数据。
阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的
它是最常用的解耦方式之一,寻找中间人(broker)搭桥,保证两个业务没有直接关联(解决上述问题的思路)。在这里插入图片描述

RabbitMQ

在这里插入图片描述
说到这里应该可以看出解决办法了,也可以看懂RabbitMQ的作用了,没错,RabbitMQ就是这个中间人。
百度百科解释:RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件)
而AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然。
AMQP的主要特征(也是RabbitMQ的特征)是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。

RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。用于在分布式系统中存储转发消息,在易用性、扩展性、高可用性等方面表现不俗。

RabbitMQ的组成

ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。
Connection是RabbitMQ的socket链接,它封装了socket协议相关部分逻辑。
ConnectionFactory为Connection的制造工厂。
Channel是我们与RabbitMQ打交道的最重要的一个接口,我们大部分的业务操作是在Channel这个接口中完成的,包括定义Queue、定义Exchange、绑定Queue与Exchange、发布消息等。

发布了53 篇原创文章 · 获赞 69 · 访问量 2075
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览