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

微服务技术栈(十一) - MQ(SpringAMQP),第1张

微服务技术栈(十一) - 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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5116625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存