消息堆积

 解决方案:

  • 增加消费者或后台相关组件的吞吐能力
  • 增加消费的多线程处理
  • 根据不同的业务实现不同的丢弃任务,选择不同的策略淘汰任务
  • 默认情况下,RabbitMQ消费者为单线程串行消费,设置并行消费两个关键属性,他们设置的是对每个消费者在初始化的时候设置的并发消费者个数,prefetchCount 是每次一次性从broker中获取的待消费的消息个数。
    • concurrentConsumer
    • prefetchConcurrentConsumer 

消息丢失

  解决方案:

  • 持久化
  • 消息确认机制

        消息在生产者,消息队列,消费者中都有可能丢失。

1. 在生产者中丢失

    原因:生产者发送消息成功后,消息队列没有收到消息,消息在从生产者传输到队列的过程中丢失,一般可能是网络不稳定。

         解决方案: 发送方采用消息确认机制,当消息成功被MQ接收到后, 会给生产者发一个确认消息,表示成功接收。

2. 在消息队列中丢失

      原因:消息到MQ后, 还没有被消费就被MQ给丢失了。比如MQ服务器宕机或者未进行持久化重启。

         解决方案:持久化交换机,队列和消息。确保MQ服务器重启时仍然能从磁盘恢复对应的队列,交换机和消息,然后我们把MQ 做多台分布式集群,防止出现所有的MQ服务器挂掉。

         注意: 交换机,队列和消息都要持久化。

3. 在消费者中丢失

    原因:默认消费者消费的时,设置的是自动回复MQ, 收到了消息,MQ会立刻删除自身保存的这条消息,如果消息已经在MQ中被删除,但消费者的业务处理出现异常或者宕机,那么就导致改消息没有被成功处理从而导致消息丢失。

             解决方案: 设置手动ACK。

  

最新文章

  1. iOS UINavigationController的使用
  2. MVC中使用Action全局过滤器出现:网页无法正常运作 将您重定向的次数过多。解决办法
  3. [ActionScript 3.0] 图片左右循环移动
  4. 【转载】OpenGL ES 三种类型修饰 uniform attribute varying
  5. ubuntu14 下配置cgi
  6. Android(java)学习笔记249:ContentProvider使用之获得系统联系人信息01
  7. python - ImportError: No module named http.cookies error when installing cherrypy 3.2 - Stack Overflow
  8. 寻找失踪的整数数组(Find the missing integer)
  9. 奇葩app大盘点,你知道几个
  10. CSS中浮动和定位对元素宽度/外边距/其他元素所占空间的影响
  11. 新手vue构建单页面应用实例
  12. spring boot 的maven设置阿里云仓库
  13. Codeforces 1140F Extending Set of Points 线段树 + 按秩合并并查集 (看题解)
  14. JQuery miniui使用小记
  15. csv文件格式说明
  16. 扩容swap空间
  17. SSISDB5:使用TSQL脚本执行Package
  18. 同样的输入,为什么Objects.hash()方法返回的hash值每次不一样?
  19. linux shell内置判断
  20. Angular js 双向绑定时字符串的转换成 数字类型的问题

热门文章

  1. leetcode中Java关于Json处理的依赖
  2. Go语言网络通信---连续通信的UDP编程
  3. NVIDIA 认证系统
  4. GPU编程和流式多处理器(六)
  5. Python分析离散心率信号(下)
  6. httprunner_安装及利用脚手架工具快速创建项目
  7. servlet、过滤器、监听器、拦截器之间的关系和区别
  8. WPF 后台代码做 TranslateTransform 的动画
  9. 实验4、Flask基于Blueprint & Bootstrap布局的应用服务
  10. .Net RabbitMQ实战指南——HTTP API接口调用