栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

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

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

一、什么是AMQP

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

二、Basic Queue 简单队列模型

总结:

1. 什么是AMQP?

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

2. SpringAMQP如何发送消息?

        (1)引入amqp 的starter 依赖

        (2)配置RabbitMQ 地址

        (3)利用RabbitTemplate 的convertAndSend 方法

 总结:

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/433739.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号