IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: 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 )?一对一?一对多? 推模式?拉模式?
其他特性

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 18:38:23  更:2022-07-20 18:40:00 
 
开发: 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-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码