RabbitMQ-基本概念

RabbitMQ:

使用场景:

异步通信、顺序消费、定时任务、请求削峰

核心组件:

1、Broker
(消息队列服务器实体)
2、Exchange
(消息交换机)
3、Queue
(消息队列载体)
4、Binding
(绑定,把Exchange和Queue按照路由规则绑定)
5、Routing Key
(路由关键字,Exchange根据关键字进行消息投递)
6、V Host
(虚拟的Broker,为TCP虚拟连接,可以有多个。 Mini-RabbitMQ Server,有独立的2、3、4)v host 可以作为不同权限隔离的手段
7、Producer
(消息生产者):同步,异步,单向
8、Consumer
(消息消费者)
9、Channel
(消息通道,客户端的每个连接李,可建立多个channel,每个代表一个回话任务)
由Exchange、Queue、RoutingKey三个才能决定一个从Exchange到Queue的唯一的线路。

RabbitMQ工作模式:

1、Simple(收发模式):
Producer产生消息放入队列,Consumer监听并消费,需要设置手动ack防止消息丢失,但需要注意及时发送ack,否则会造成内存溢出。
2、Work(资源竞争):
Producer产生消息放入队列,多个Consumer监听并消费,先到先得。需要设置一个开关(Syncronize)保证一对一。否则会一个被多用。
3、Publish/subscribe发布订阅(共享资源):
Consumer监听自己的队列,生产消息给broke,由Exchange转发到绑定此交换机的每个队列,都能接收到消息
4、routing路由模式:
Producer将消息发送给Producer,Producer根据Routing key有选择的转发消息到匹配的queue
5、topic主体模式(路由模式的一种):
添加了模糊匹配(通配符*(多个)、#(单个))

如何保证RabbitMQ消息的顺序性

1、拆分多个queue,每个queue一个consumer,多个queue,麻烦
2、就一个queue对应一个consumer,在consumer内部用内存队列做排队,分发给底层不同的worker处理

消息的分发机制:

1、默认轮询,当出现处理速度快慢不一致时,会出现处理速度快的空闲状态。
2、不公平分发,能者多劳
3、预值分发,预值满时停止发送,除非ack确认后。

消息怎么路由:

消息提供方→路由→一个或多个消息发布到交换器时,消息拥有一个路由键,在消息创建时设定。通过队列路由键,可以把队列绑定到交换器上。消息到达交换器后,
RabbitMQ 会将消息的路由键与队列的路由键进行匹配(针对不同的交换器有不同的路由规则)

消息路由:

1、Fanout:收到消息,广播到所有绑定的队列上
2、Direct:路由键完全匹配,投递到相应的队列上
3、Topic:不同来源到同一个队列,支持通配符

消息持久化:

	消息发送之前写入磁盘上的持久化日志文件中,消费后把消息标记为等待垃圾收集状态,如果被消费之前重启,将自动重建交换器和队列,重新发布日志文件中的消息

消息基于什么传输:

	使用信道的方式传输数据,信道建立在真实的TCP连接内的虚拟连接,且每条TCP连接上的信道数量没有限制
	TCP方式开销大,且并发数受系统资源限制,会造成性能瓶颈。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李金轩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值