赞
踩
消息队列解决的核心问题主要是:异步、解耦、消峰填谷。
一般来说,有下面使用场景:
异步、解耦、消峰填谷这是消息队列最大的优点。缺点主要在于系统的可用性、复杂性、一致性问题,引入消息队列后,需要考虑MQ的可用性,万一MQ崩溃了岂不是要爆炸?而且复杂性明显提高了,需要考虑一些消息队列的常见问题和解决方案,还有就是一致性问题,一条消息由多个消费者消费,万一有一个消费者消费失败了,就会导致数据不一致。
延迟队列的实现有两种方式:
通过消息过期后进入死信交换器,再由交换器转发到延迟消费队列,实现延迟功能;
使用 RabbitMQ-delayed-message-exchange 插件实现延迟功能。
提供了事务的功能。 通过将 channel 设置为 confirm(确认)模式。
如何保证消息的顺序性
需要保持先后顺序的消息放到同一个消息队列中(kafka中就是partition,rabbitMq中就是queue)。然后只用一个消费者去消费该队列。
如果为了吞吐量,有多个消费者去消费怎么办?
RabbitMQ:单线程消费保证消息的顺序性;对消息进行编号,消费者处理消息是根据编号处理消息。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。