『假如我是面试官』RabbitMQ我会这样问

2021-06-22
阅读 6 分钟
2.5k
1. 为什么你们公司选择RabbitMQ作为消息中间件在消息队列选型时,我们调研了市场上比较常用ActiveMQ,RabbitMQ,RocketMQ,Kafka。RabbitMQ相对成熟稳定,这是我们选择它最主要的原因。社区比较活跃,有完善的资料可以参考。Rabbitmq的吞吐量可以达到万级,完全满足我们系统的要求。RabbitMQ是Erlang语言开发的,性能比...

从面试角度分析ArrayList源码

2020-12-15
阅读 4 分钟
1.9k
注:本系列文章中用到的jdk版本均为java8ArrayList类图如下:ArrayList的底层是由数组实现的,数组的特点是固定大小,而ArrayList实现了动态扩容。ArrayList部分变量如下,在下面的分析中会用到这些变量。 {代码...} 一、初始化ArrayList初始化ArrayList一般会使用以下两个构造器1.1 无参构造器初始化ArrayList的时候如...

《RabbitMQ》什么是死信队列

2020-08-07
阅读 5 分钟
4.4k
一 什么是死信队列当一条消息在队列中出现以下三种情况的时候,该消息就会变成一条死信。消息被拒绝(basic.reject / basic.nack),并且requeue = false消息TTL过期队列达到最大长度当消息在一个队列中变成一个死信之后,如果配置了死信队列,它将被重新publish到死信交换机,死信交换机将死信投递到一个队列上,这个队列...

《RabbitMQ》如何保证消息不被重复消费

2020-08-06
阅读 3 分钟
9.7k
由于生产者发送消息给MQ,在MQ确认的时候出现了网络波动,生产者没有收到确认,实际上MQ已经接收到了消息。这时候生产者就会重新发送一遍这条消息。

《RabbitMQ》如何保证消息的可靠性

2020-08-05
阅读 5 分钟
6.3k
一条消费成功被消费经历了生产者->MQ->消费者,因此在这三个步骤中都有可能造成消息丢失。一 消息生产者没有把消息成功发送到MQ1.1 事务机制AMQP协议提供了事务机制,在投递消息时开启事务支持,如果消息投递失败,则回滚事务。自定义事务管理器 {代码...} 修改yml {代码...} 开启事务支持 {代码...} 消息未接收时...