Java面试技巧之每天一个Tip——RabbitMQ如何进行消息持久化?

请你说一下RabbitMQ是如何进行消息持久化的?

RabbitMQ进行消息持久化包括三个部分:

第一,Exchange(交换机)持久化,声明时指定Durable(英文意思:持久的)为True;

第二,Queue持久化,同样在声明时指定Durable为True;

第三,消息持久化,在投递时指定delivery_mode为2(非持久化设置为1)。

补充说明(别等面试官问的意思):

1、Exchange和Queue必须同时是持久化的,它们之间的绑定才能是持久化的,否则,不允许建立绑定关系;

2、Exchange和Queue一旦创建,其是否持久化的标志就不能改变了,想改变,那就先删除再重新创建。

追问清单:

  • 什么是消息队列?它的作用是什么?(解耦、异步、削峰、限流)
  • RabbitMQ是如何实现消息队列的?(包含的角色,角色间是如何联系的?就是答RabbitMQ是如何构造消息队列的?)
  • RabbitMQ的交换机都有哪些类型?分别是干什么用的?
  • 生产者和消费者在RabbitMQ中是如何工作的?
  • 如何保证消息不会被重复消费?
  • RabbitMQ如何保证消息的可靠性传输?
  • RabbitMQ如何保证消息的有序性?
  • RabbitMQ如何实现高可用?
  • 出现消息堆积的情况,该如何处理?

追问清单如上,当然了,这些追问清单后续的文章也会一一回答的,不是说RabbitMQ这个主题写了这一篇面试技巧就不管了,也欢迎大家持续关注~

这些问题也能给面试官作为面试提问的素材哈~~

你可能感兴趣的:(Java,rabbitmq,java,面试)