当前位置:   article > 正文

RabbitMQ常见问题以及实际问题解决_rabbitmq常见问题及解决总结

rabbitmq常见问题及解决总结

消息可靠性、延迟消息问题、高可用问题、消息堆积问题

异步调用的优势是什么?

  • 耦合度低,拓展性强
  • 异步调用,下游服务故障不影响上游业务
  • 缓存消息,流量削峰填谷

异步调用的问题是什么?

  • 不能立即得到调用结果,时效性差
  • 不能确定下游业务执行是否成功
  • 业务安全完全依赖于Broker的可靠性

一、消息可靠性

消息可靠性问题: 消息从生产者发送到Exchange,再到queue,再到消费者,有哪些导致消息丢失的可能性?

  1. 发送时丢失:
    - 生产者发送的消息为送达exchange
    - 消息到达exchange后未到达queue
  2. MQ宕机,queue将消息丢失
  3. consumer接收到消息后未消费就宕机
    在这里插入图片描述 ①生产者消息确认

RabbitMQ提供了publisher confirm机制来避免消息发送到MQ过程中丢失。消息发送到MQ以后,会返回一个结果给发送者,表示消息是否处理成功。结果有两种请求:

  • publisher-confirm,发送者确认
    =消息成功投递到交换机返回ack
    =消息未投递到交换机,返回nack
  • publisher-return,发送者回执
    =消息投递到交换机了,但是没有路由到队列。返回ACK,及路由失败原因。
    注意:确认机制发送消息时,需要给每个消息设置一个全局唯一id,以区分不同消息,避免ack冲突
    在这里插入图片描述
    接下来我们通过代码来实现生产者确认:
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/956368
推荐阅读
相关标签