赞
踩
最近接触了多线程和MQ等性能相关的内容,来写写MQ在实际开发中容易碰到的问题及其解决方法。这同时也是面试中常见的提问。
提示:以下是本篇文章正文内容,下面案例可供参考
消息堆积的产生主要在于两方面,其一为消费的太慢或消费方出现异常,其二为生产方生产地太快。总的来说就是生产消费速度不匹配造成的
一旦出现了消息堆积,我们最直接的影响就是新消息无法入队,随之而来的就是等待时长过长,用户等待烦躁,降低了用户体验。
对症下药,既然是产销速度不匹配,就针对二者做优化
针对上述丢失情形,开发者或RabbitMQ都能对它们给出解决方案
work queue
模式下,只有一个队列,但存在多个消费者。多个消费者线程的竞争会导致数据乱序。简单队列
模式下,同样的多个消费者线程也会导致数据乱序hash
。再对队列数取模(hash结果%队列数
),将结果相同的消息压入同一个队列中去,这就保证了一个队列中有且仅有一个消费者因消息重发机制会出现消息重复消费的情况
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。