| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> RabbitMq_消息可靠性 -> 正文阅读 |
|
[Java知识库]RabbitMq_消息可靠性 |
1、rebbitmq的消息可靠性投递从以下四个方面导致消息发送失败的四个方面 ?(1)从生产者->broker:网络连接或者broker的磁盘满了等情况 ? ? ? ? 解决方案: ????????1.transaction事务模式,但是事务模式有一个缺点就是容易阻塞,一条消息没有发送完毕,另一条消息没法发送,会榨干rabbitmq服务器的性能,所以生产环境慎用 ????????2.confirm确认模式:有三种,单条确认,确认慢,批量确认,如果一批有一个失败,全部重发和异步确认三种 (2)从exchage->queue:routingkey有问题或者队列不存在,有两种方式处理这种情况,一种是服务端重新发给消费者,消息回发,第二种是存到备用交换机中 ? (3)queue:宕机等硬件发生故障的时候,内存中消息容易丢失,解决办法:就元数据和消息持久化到磁盘,队列持久化,交换机持久化,消息持久化,集群部署 ??(4)queue->消费者,自动ACK和手动ACK 如何保证消息的顺序性发生情况:一个消费者,部署到多台服务器,相当于多个消费者 解决方案:1、指定一个消费者消费,2、内部维持顺序,例如用分布式锁 发生情况:1、发表微博;2、发表评论;3、删除微博。顺序不能颠倒 不同的业务绑定不同队列 面试题:
4.1
消息队列的作用与使用场景?
要点:关键词+应用场景
4.2 Channel
和
vhost
的作用是什么?
Channel:减少 TCP 资源的消耗。也是最重要的编程接口。
Vhost:提高硬件资源利用率,实现资源隔离。
4.3 RabbitMQ
的消息有哪些路由方式?适合在什么业务场景使用?
Direct、Topic、Fanout
4.4
交换机与队列、队列与消费者的绑定关系是什么样的?
bingding和bingdingkey
4.5 多个消费者监听
一个
队列时(比如一个服务部署多个实例),消息会重复消费吗?
不会
4.6
无法被路由的消息,去了哪里?
直接丢弃。可用备份交换机接收。
4.7
消息在什么时候会变成
Dead Letter
(死信)?
消息过期;消息超过队列长度或容量;消息被拒绝并且未设置重回队列
4.8
如果一个项目要从多个服务器接收消息,怎么做?
定义多个 ConnectionFactory,注入到消费者监听类/Temaplate。
4.9 RabbitMQ
如何实现延迟队列?
基于数据库+定时任务;
或者消息过期+死信队列;
或者延迟队列插件。
4.10
哪些情况会导致消息丢失?怎么解决?
4种情况
4.11
一个队列最多可以存放多少条消息?
MaxLength
4.12
可以用队列的
x-max-length
最大消息数来实现限流吗?例如秒杀场景。
不能,因为会删除先入队的消息,不公平。
4.13
如何提高消息的消费速率?
创建多个消费者。
4.14 AmqpTemplate
和
RabbitTemplate
的区别?
Spring AMQP 是 Spring 整合 AMQP 的一个抽象。Rabbit 是一个实现。
4.15
如何动态地创建队列和消费者?
通过 ListenerContainer
com.gupaoedu.vip.mq.rabbit.springbootapi.amqp.container
.ContainerConfig
container
.
setQueues
(
getSecondQueue
(),
getThirdQueue
());
//
监听的队列
4.16 Spring AMQP
中消息怎么封装?用什么转换?
Message,MessageConvertor
4.17
如何保证消息的顺序性?
一个队列只有一个消费者
4.18 RabbitMQ
的集群节点类型?
磁盘节点和内存节点
4.19
如何保证
RabbitMQ
的高可用?
HAProxy(
LVS)+Keepalived
4.20
大量消息堆积怎么办?
1) 重启(滑稽)
2) 多创建几个消费者同时消费
3) 直接清空队列,重发消息
4.21
设计一个
MQ
,你的思路是什么?
存储与转发。
存储:内存:用什么数据结构?
磁盘:文件系统?数据库?
通信:通信协议(
TCP HTTP AMQP )?一对一?一对多?
推模式?拉模式?
其他特性
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/31 7:19:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |