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 )?一对一?一对多? 推模式?拉模式?
其他特性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值