RabbitMQ基础知识和一些坑

 

  • 为什么要使用消息中间件?
    • 举例还是快递
    • 消息中间件的优点
      • 1. 解耦
        • 减少系统间的相互依赖关系 , 全部通过中间件来互相调用. 生产者只需要保证自己消息发送成功即可, 不需要关注后续的操作是否成功。
      • 2. 肖峰
        •  防止高峰期系统被打死 ,或者说直接把数据库mysql打死。消费者每秒消费的数值在性能最大化的前提下运行 ,不至于让系统瘫痪。
      • 3. 异步
        • 本来同步执行需要上千毫秒的操作,可以进行异步化操作,缩短响应时间。 
  • 消息中间件有什么缺点?
    • 1.降低了系统可用性.
    • 2.增加了系统的复杂性.
      • 需要考虑到消息队列使用中可能会产生的一些问题,比如,消息的丢失,消息的幂等,消息的顺序性等。
  • 消息中间件如何选择?
    • RabbitMQ基础知识和一些坑

 

  • RabbitMQ是如何实现延迟队列的?
    • 通过死信队列dlx +  消息过期时间TTL
    • RabbitMQ基础知识和一些坑

 

  • 我们用的RabbitMQ 中有哪些坑?
    • 举例快递公司
    • 消息的可靠性如何保障
      • 消息补偿机制
      • RabbitMQ基础知识和一些坑

 

      • 这种消息补偿机制有什么隐患?
        • 消费者消费成功回调消息也有可能会失败 , 这样会导致生产者重复发送相同的消息到queue1中  , 下面解决消息幂等性的问题  .
    • 消息的幂等性如何保障
      • 乐观锁机制
      • 生产者在发送消息的时候, 同事携带版本信息 vision . 当消费者接收到消息 , 更新数据库的时候 , 校验版本信息 . 版本不对则无法成功更新 .
      • update  x = 1 , vision= 2 from test where  x = 0 , vision= 1