RabbitMQ概念

异步调用的优势是什么?

耦合度低,扩展性强

异步调用,无需等待,性能好

故障隔离,下游服务故障不影响上游业务

缓存消息,流量削峰填谷

异步调用的问题:

不能立刻得到调用结果,时效性差。

不确定下游业务执行是否成功。

业务安全依赖于Broker的可靠性。

MQ,中文是消息队列,字面来看就是存放消息的队列,也就是异步调用中的Broker。

Work模型的使用:

多个消费者绑定到一个队列,可以加快消息处理速度

同一个消息只会被一个消费者处理

通过设置prefetch来控制消费者预取的消息数量,处理完一条在处理下一条,实现能者多劳。

fanout交换机

fanout Exchange 会将接收到的消息广播到每一个跟其绑定的queue,所以也叫广播模式。

交换机的作用是什么?

接收publisher发送的消息。

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

FanoutExchange的会将消息路由到每个绑定的队列。

Diect交换机

Direct Exchange 会将接受到的消息根据规则路由到指定的Queue,因此称为定向路由。

每一个Queue都与Exchange设置一个BindingKey

发布者发送消息时,指定消息的routingKey.

exchange将消息路由到BindingKey与RoutingKey一致的队列。

Topic交换机

TopicExchange与DirectExchange类似,区别在于routingKey可以时多个单词的列表,并且以.分割。

声明队列和交换机

SpingAMQP提供了几个类,用来声明队列、交换机及其绑定关系:

Queue:用于声明队列,可以用工厂类QueueBuilder构建

Exchage:用于声明交换机,可以用工厂类ExchangeBuilder构建

Binding:用于声明队列和交换机的绑定关系,可以用工厂类BindingBuilder构建

相关推荐
久念祈3 小时前
C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(五)
java·rabbitmq·java-rabbitmq
你我约定有三6 小时前
分布式微服务--Nacos作为配置中心(二)
java·分布式·spring cloud·微服务·架构·wpf·负载均衡
黄雪超7 小时前
Kafka——关于Kafka动态配置
大数据·分布式·kafka
bing_1588 小时前
如何利用 Redis 的原子操作(INCR, DECR)实现分布式计数器?
数据库·redis·分布式
爱思德学术13 小时前
中国计算机学会(CCF)推荐学术会议-A(软件工程/系统软件/程序设计语言):FSE 2026
分布式·软件工程·软件构建
Code季风18 小时前
API 网关与服务发现:实现动态路由与智能请求转发的原理揭秘
分布式·微服务
怒码ing20 小时前
分布式事务----spring操作多个数据库,事务以及事务回滚还有用吗
数据库·分布式·spring
你我约定有三20 小时前
分布式微服务--Nacos作为配置中心(一)
分布式·微服务·架构
小熊h20 小时前
【分布式的个人博客部署】
linux·运维·服务器·分布式
你我约定有三20 小时前
分布式微服务--Nacos作为配置中心(补)关于bosststrap.yml与@RefreshScope
java·分布式·spring cloud·微服务·架构