1.如何实现削峰
改为手动确认应答,用basicqos预取值设置出在多少个消息没有接到应答时停止推送到该消费者(分为推,拉模式,拉会建立很多连接比较慢,推模式建立一个消费者缓冲区可以比较实时)。所以如果缓冲区有比较多的消息未处理时mq就不会继续发送达到限流。
2.正常队列,工作队列是多个消费者用一个队列,轮询,公平分发(根据各自处理速度分发)需要设置预取值和手动应答。
如何确保消息正确地发送至RabbitMQ?如何确保消息接收方消费了消息?
confirm模式(发送方确认模式),在信道上发布的消息都会被指派一个唯一的ID。一旦消息被投递到目的队列后,或者消息被写入磁盘后(可持久化的消息),信道会发送一个确认给生产者(包含消息唯一 ID)。生产者应用程序的回调方法就会被触发来处理确认消息。(这里有同步有批量有回调)
关键词:发布确认,唯一id,成功或失败回调。
routing,topic,fanout(发布订阅)模式,各自是怎么选择队列的。
simple简单模式、work工作队列模式、Routing路由模式是基于Direct类型的交换机来实现。
扩容,惰性队列解决消息积压,多线程消费
我们通过提升消息队列的性能来减少消息消费的延迟,主要讲到了,
通过消息队列工具监控消息堆积数据以及通过监控生成消息方式进行监控消息延迟情况,
通过横向扩展消费者来增加处理能力
然后有各种面经面试题可以背一背。
面试题
重点应该是消息发送存储过程,这里通过指定交换机和routingkey,判断交换机模式,根据四种模式进行匹配bindingkey转发到相应的队列。扇出模式是发布订阅,topic模式是模糊匹配。