rabbitmq(面试前复习)

概念性问题

    队列(queue): 是RabbitMQ的内部对象,用于存储消息。

    交换机(exchange):消息首先到达的是交换机而不是队列。

    routing key : 消息到交换机的一个路由规则。

    binding key : 交换机绑定队列的关系。

Exchange Types(交换机路由的4个规则

    fanout:会发送到绑定exchange的所有队列

    direct: 只有routing key 和 binding key 完全匹配才会发给队列

    topic:有匹配规则的表达式 (. * # )

    headers: 根据发送消息中的headers进行匹配

 

遇到哪些问题?如何解决

问:消费者重启后会重复消费一些消息并重复执行业务逻辑

    答:发送给mq后,mq需要收到回执才会把对应的队列删掉

问:宕机了怎么办

    答:把message和queue都设置成持久化的,可以保证大部分信息不回丢失。如果rabbitmq服务器已经接收到生产者的消息了,但没来得及持久化就断电了,需要用到事务。

问:rabbitmq的事务?

    答:太耗费性能,就不考虑了,跟spring的事务很相近,事务针对信道 channel

 

为什么要用rabbitmq

  • 适用于高并发

  • 支持持久化

  • 可靠性

用在什么地方

    日志

     下单->减库存

      抢购

      消息提醒

 

 

你可能感兴趣的:(面试)