RabbitMQ
默认情况下,RabbitMQ会将消息依次轮询投递给绑定在消息队列上的每一个消费者。但是这个并没有考虑到消费者是否已经处理完消息,可能会出现消息堆积。TopicExchange与DirectExchange类似,区别在于routingKey可以是多个单词的列表,并且。DirectExchange会讲接受到的消息根据规则路由到指定的Queue,因此被称为定向路由。Work queues ,任务模型,让
系统学习消息队列分享(一) 怎样系统学习消息队列? - 温柔的风 - 博客园
一、初识MQ
1.同步调用
优势:
- 时效性强,等待到结果后才返回
问题
- 扩展性差
- 性能下降
- 级联失败问题(其中一个服务异常,后续都处理失败)
2.异步调用
优势:
- 耦合度低,扩展性强
- 异步调用,无需等待,性能好
- 故障隔离,下游服务故障不影响上游业务
- 缓存消息,流量削峰填谷
问题:
- 不能立刻得到结果,时效性差
- 不确定下游业务是否执行成功
- 业务安全依赖于Broker(消息代理)的可靠性
二、RabbitMQ
1.数据隔离
三、Java客户端
1.快速入门
2.work模型
Work queues ,任务模型,让多个消费者绑定到一个队列共同消费队列中的消息
消费者消息推送限制
默认情况下,RabbitMQ会将消息依次轮询投递给绑定在消息队列上的每一个消费者。但是这个并没有考虑到消费者是否已经处理完消息,可能会出现消息堆积。因此我们需要修改application.ym,设置preFetch值为1,确保同一时刻最多投递给消费者1条消息:
总结:
- 多个消费者绑定到一个队列上,可以加快消息处理速度
- 同一条消息只会被一个消费者处理
- 通过设置prefetch来控制消费者预取的消息数量,处理完一条再处理下一条,实现能者多劳
3.Fanout交换机
真正的环境都会通过exchange来发送消息,而不是直接发送到队列,交换机的类型有以下三种:
- Fanout:广播
- Direct:定向
- Topic:话题
交换机的作用:
- 接受publisher发送的消息
- 将消息按照规则路由到与之绑定的队列
- FanoutExchange会将消息路由到每个绑定的队列
4.Direct交换机
DirectExchange会讲接受到的消息根据规则路由到指定的Queue,因此被称为定向路由
- 每一个Queue都与Exchange设置一个BindingKey
- 发布者发送消息时,指定消息的RoutingKey
- Exchange将消息路由到BindingKey与RoutingKey一致的队列
Fanout交换机与Direct交换机差异:
- Fanout交换机讲消息路由给每一个与之绑定的队列
- Direct交换机根据RoutingKey判断路由给哪个队列
- 如果多个队列具有相同的RoutingKey,则与Fanout功能类似
5.topic交换机
TopicExchange与DirectExchange类似,区别在于routingKey可以是多个单词的列表,并且.分割
Queue与Exchange指定BindingKey可以使用通配符:
- #:代表0个或者多个单词
- *:代指一个单词
6.声明队列和交换机
方式一、
方式二、
7.消息转换器

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)