RabbitMQ应用场景与实例

解决分布式事务的一致性,消息队列、消息中间件,消息中间件也可以称消息队列,是指用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息队列模型,可以在分布式环境下扩展进程的通信。

当下主流的消息中间件有RabbitMQ、Kafka、ActiveMQ、RocketMQ等。其能在不同平台之间进行通信,常用来屏蔽各种平台协议之间的特性,实现应用程序之间的协同。优点在于能够在客户端和服务器之间进行同步和异步的连接,并且在任何时刻都可以将消息进行传送和转发,是分布式系统中非常重要的组件,主要用来解决应用耦合、异步通信、流量削峰等问题。
在这里插入图片描述

RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发。它同时实现了一个Broker构架,这意味着消息在发送给客户端时先在中心队列排队,对路由(Routing)、负载均衡(Load balance)或者数据持久化都有很好的支持。

RabbitMQ从整体上来看是一个典型的生产者消费者模型,主要负责接收、存储和转发消息。
在这里插入图片描述
生产者:

生产者连接到RabbitMQ Broker,建立一个连接(Connection)开启一个信道(Channel)
生产者声明一个交换器,并设置相关属性,比如交换机类型、是否持久化等
生产者声明一个队列井设置相关属性,比如是否排他、是否持久化、是否自动删除等
生产者通过路由键将交换器和队列绑定起来
生产者发送消息至RabbitMQ Broker,其中包含路由键、交换器等信息
相应的交换器根据接收到的路由键查找相匹配的队列
如果找到,则将从生产者发送过来的消息存入相应的队列中
如果没有找到,则根据生产者配置的属性选择丢弃还是回退给生产者
关闭信道
关闭连接
消费者:

消费者连接到RabbitMQ Broker ,建立一个连接(Connection),开启一个信道(Channel)
消费者向RabbitMQ Broker请求消费相应队列中的消息,可能会设置相应的回调函数
等待RabbitMQ Broker回应并投递相应队列中的消息,消费者接收消息
消费者确认(ack) 接收到的消息
RabbitMQ从队列中删除相应己经被确认的消息
关闭信道
关闭连接
http://www.sohu.com/a/280203461_411876
为什么要有信道:生产者和消费者都要和RabbitMQ Broker 建立连接,这是一条tcp连接,而操作系统对于TCP连接的创建与销毁是非常昂贵的开销。

而高并发的时候,可能每秒有上万条tcp连接,资源浪费的同时也会超过操作系统每秒所能连接的数量,要在一条tcp连接上操作,又能保证各个线程之间的私密性,所以出现信道channel。

信道是虚拟连接,在connection基础上的虚拟连接,在应用程序和Rabbit Broker建立tcp连接时,客户端紧接着建立一个AMQP信道(channel),每个channel有唯一的ID,处理每条AMQP指令都是通过信道完成的。信道就像电缆里的光纤束,一条电缆内含有许多光纤束,允许所有的连接通过多条光线束进行传输和接收。

AMQP,高级消息队列协议,AMQP协议这种降低耦合的机制是基于与上层产品,语言无关的协议。是一种二进制协议,提供客户端应用与消息中间件之间多通道、协商、异步、安全、中立和高效地交互。从整体来看,AMQP协议可划分为两层:
功能层(定义命令,用于实现业务逻辑),传输层(基于二进制数据流传输,将应用程序调用的指令传回服务器,并返回结果)。https://blog.youkuaiyun.com/jaredcoding/article/details/78656636

RabbitMQ是一个开源的消息中间件,它可以用于实现应用程序之间的解耦。通过使用RabbitMQ应用程序可以通过发送和接收消息来进行通信,而不需要直接依赖于彼此的存在和状态。 以下是RabbitMQ应用解耦的一些常见场景和方法: 1. 发布/订阅模式:发布/订阅模式是一种常见的解耦方式,其中一个应用程序(发布者)将消息发送到RabbitMQ的交换机,而其他应用程序(订阅者)则从交换机订阅并接收消息。这样,发布者和订阅者之间不需要直接通信,它们只需要通过交换机进行消息传递。 2. 队列模式:队列模式是另一种常见的解耦方式,其中一个应用程序将消息发送到RabbitMQ的队列中,而其他应用程序则从队列中接收消息。这样,发送者和接收者之间不需要直接通信,它们只需要通过队列进行消息传递。 3. 路由模式:路由模式是一种更灵活的解耦方式,其中消息根据路由键被发送到不同的队列。发送者可以指定消息的路由键,而接收者可以根据路由键选择性地接收消息。这样,发送者和接收者之间可以根据需要进行灵活的消息传递。 4. 主题模式:主题模式是一种更高级的解耦方式,其中消息根据主题进行发布和订阅。发送者可以指定消息的主题,而接收者可以根据主题选择性地接收消息。这样,发送者和接收者之间可以根据主题进行灵活的消息传递。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值