微服务技术栈(十一) - MQ(SpringAMQP)

一、什么是AMQP

        SpringAmqp的官方地址:https://spring.io/projects/spring-amqp

二、Basic Queue 简单队列模型

总结:

1. 什么是AMQP?

        应用间消息通信的一种协议,与语言和平台无关。

2. SpringAMQP如何发送消息?

        (1)引入amqp 的starter 依赖

        (2)配置RabbitMQ 地址

        (3)利用RabbitTemplateconvertAndSend 方法

 总结:

SpringAMQP如何接收消息?

        (1)引入amqp 的starter 依赖

        (2)配置RabbitMQ 地址

        (3)定义类,添加@Component 注解

        (4)类中声明方法,添加@RabbitListener 注解,方法参数就时消息

注意:消息一旦消费就会从队列删除,RabbitMQ 没有消息回溯功能

三、Work Queue 工作队列模型

消费预取限制

总结:

Work模型的使用:

        1. 多个消费者绑定到一个队列,同一条消息只会被一个消费者处理

        2. 通过设置prefetch 来控制消费者预取的消息数量

四、发布( Publish )、订阅( Subscribe )

 注意:exchange负责消息路由,而不是存储,路由失败则消息丢失

五、发布订阅-Fanout Exchange

总结:

1. 交换机的作用是什么?

(1)接收publisher 发送的消息

(2)将消息按照规则路由到与之绑定的队列

(3)不能缓存消息,路由失败,消息丢失

(4)FanoutExchange 的会将消息路由到每个绑定的队列

2. 声明队列、交换机、绑定关系的Bean是什么?

(1)Queue

(2)FanoutExchange

(3)Binding

六、发布订阅-DirectExchange

总结:

1. 描述下Direct 交换机与Fanout 交换机的差异?

(1)Fanout 交换机将消息路由给每一个与之绑定的队列

(2)Direct 交换机根据RoutingKey 判断路由给哪个队列

(3)如果多个队列具有相同的RoutingKey,则与Fanout 功能类似

2. 基于@RabbitListener注解声明队列和交换机有哪些常见注解?

(1)@Queue

(2)@Exchange

七、发布订阅-TopicExchange

 总结:

描述下Direct交换机与Topic交换机的差异?

(1)Topic交换机接收的消息RoutingKey必须是多个单词,以 . 分割

(2)Topic交换机与队列绑定时的bindingKey可以指定通配符

(3)#:代表0个或多个词

(4)*:代表1个词

八、SpringAMQP-消息转换器

总结:

SpringAMQP中消息的序列化和反序列化是怎么实现的?

(1)利用MessageConverter实现的,默认是JDK的序列化

(2)注意发送方与接收方必须使用相同的MessageConverter

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值