RabbitMQ笔记

RabbitMQ相关学习笔记

消息中间件的概述

1. MQ Message Queue 消息中间件(消息队列)是应用程序和应用程序之间一种通讯的方式

2. MQ的作用有三种:
异步:
解耦:
削峰:

3. MQ的现实主要有AMQP和JMS

AMQP: Advanced Message Queue Protocol 高级消息队列协议,是一种binary wire-level protocol(链接协议),不从API层进行限定,直接定义网络交换的数据格式

JMS: javaMessage Service java消息服务应用程序接口,是一个java平台中关于面向消息中间件(MOM)的API,用于两个应用程序之间,或者分布式系统中发送消息,进行异步通讯

区别: JMS定义了统一接口,对消息操作进行统一;AMQP通过规定协议统一数据交换格式
JMS必须使用java进行开发,AMQP是一种协议不规定语言
JMS 规定两种消息模式 ,AMQP消息模式丰富。

RabbitMQ

官网:http://www.rabbitmq.com/

RabbitMQ提供6种模式:简单模式、work模式、publish/subscribe发布订阅模式、

工作队列模式(work queue):官方工作模式的图片
与简单模式相比,工作模式有多个消费端共同消费一个队列中的消息
应用场景: 对于任务过重,任务多的情况设置多个消费者就可以提高处理速度。

订阅模式(p/s queue):
官方队列模式的图片
  相对于前两个模式,发布订阅模式多了一个交换机来进行消息的转发和处理,交换机不负责消息的存储,所以没有符合与交换机绑定的队列或者没有符合路由规则的队列,消息就会丢失 。
交换机类型一共有三个:(发布订阅模式用的是Fanout类型的)
  Fanout:广播,将消息交给所有绑定到交换机的队列
  Direct: 定向,把消息交给符合指定routing key的队列
  Topic: 通配符,把消息交给符合routing pattern(路由模式)的队列

路由模式(Routing模式):
官网原图路由模式
   队列与交换机绑定需要一个RoutingKey(路由key)。消息的发送方在向exchange发送消息时,也必须指定消息的RoutingKey。exchange不会再把消息发送给每一个绑定的队列,而是根据消息的RoutingKey进行判断,只有队列的RoutingKey和消息的RouotingKey完全一致才会接收到消息。
   路由模式交换机用到的direct类型的。

通配符模式(Topics): 与路由模式不同的是通配符模式交换机的类型为:Topic,可以让队列绑定RoutingKey时可以使用通配符。
通配规则:(routingkey多个单词之间以“.”分割)
   # :匹配一个或多个词
   $ : 只匹配一个词
官网原图通配符模式
RabbitMQ的过期时间TTL:
  RabbitMQ支持对消息和队列设置过期时间。过期的消息将被放到私信队列中。
  设置过期时间分为两种:一种是通过队列设置消息的过期时间,此队列中的消息过期时间都是一样的。另一种是对消息单独设置。如果两者都有设定则取过期时间比较小的那个。
RabbitMQ的死信队列DLX:
  死信队列即为死信交换机,当一个消息在队列中变成死信之后,就会被重新发送到另一个交换机中,这个交换机就是与死信队列绑定的交换机。
  消息变成死信的原因有:消息被拒绝,消息过期,队列达到最大长度。
RabbitMQ的延迟队列
  延迟队列可以通过:过期时间+死信队列来实现;
  实现流程:生产者发送消息到交换机,交换机在交给对应的消息队列,等消息在指定的时间过期后,消息会被转发到死信交换机,死信交换机在分发到指定的死信队列中,最后消费者在从死信队列中获取信息。
RabbitMQ的消息确认机制
  为确认而且保证消息被送达,rabbitmq提供两种方式:发布确认和事务(不可同时使用)
  发布确认:分为消息发送成功确认和消息发送失败回调。

RabbitMQ的高可用方案:
主备模式、远程模式、镜像队列模式、多活模式、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值