认识消息队列

什么是消息队列,为什么要用消息队列?

消息队列是存放消息的容器,和Queue一样(FIFO)。
消息队列的作用:

  1. 削峰:将短时间高并发产生的事务消息存储在消息队列中,然后去消费这些消息。防止压力过大导致系统崩溃。
  2. 解耦:客户端发送消息到消息队列中去,服务端处理消息。服务端和客户端没有直接的联系。
  3. 异步提高系统性能:服务端接到客户端的请求后,将其存储到消息队列,就返回结果,不需要一直等待。

AMQP

AMQP(Advanced Message Queuing Protocol),一个提供统一消息服务的应用层标准高级消息队列协议(二进制应用层协议)。
跨平台、跨语言、仅支持传输二进制的消息。
工作过程:
发布者(Publisher)发布消息(Message),经由交换机(Exchange有多种类型,最常用的是Direct/Fanout/Topic三种类型。)交换机根据路由规则将收到的消息分发给与该交换机绑定的队列(Queue)。最后 AMQP 代理会将消息投递给订阅了此队列的消费者,或者消费者按照需求自行获取。
direct exchange根据消息携带的路由键(routing key)将消息投递给对应绑定键的队列。直连交换机的队列通常是循环分发任务给多个消费者(轮询)。
funout exchange将消息路由给绑定到它身上的所有队列。(广播)
topic exchange不像direct那样Key相等才传递消息给队列,它的binding Key存在两种特殊的字符“”和“#”。(前者表示一个单词,后者表示多个,也可以是零个)。Key中通过 “.” 分隔单词。例子:binding Key (“”,"#",A )和routing key (A,QSQS,A)匹配。

RabbitMQ

RabbitMQ 是采用 Erlang 语言实现 AMQP的消息中间件。

RocketMQ

RocketMQ是一个队列模型的消息中间件,具有高性能、高可靠、高实时、分布式的特点。
Producer
NameServer :注册中心 ,主要提供两个功能:Broker管理和路由信息管理
Broker:主要负责消息的存储、投递和查询以及服务高可用保证。生产者生产消息到 Broker ,消费者从 Broker 拉取消息并消费。
Consumer

在RocketMQ中使用的是事务消息加上事务反查机制来解决分布式事务问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值