1.怎么保证消息顺序性
借鉴 https://www.jianshu.com/p/02fdcb9e8784
一个队列有多个消费者消费,顺序会乱。
第一种:就是拆分多个 queue,每个 queue 对应一个 consumer(消费者),就是多一些 queue 而已,确实是麻烦点;第二种 : 就一个 queue 但是对应一个 consumer,然后这个 consumer 内部用内存队列做排队,然后分发给底层不同的 worker 来处理。
2.消息堆积
产生原因: 消费者消费的速度赶不上生产者生成的速度。或者消费者出现异常
解决方法:
增加消费者个数,多线程消费。
借鉴 https://www.cnblogs.com/townsend/p/13663544.html
(1)拆分MQ ,生产者一个MQ , 消费者一个MQ , 中间使用模拟处理分发程序。当消息挤压时,只需处理生成者的MQ
.......
https://www.jianshu.com/p/d62fb6a7f88e
3.怎么保证消息不丢失
产生原因:生产者在发送至MQ时,消息丢失。因为网络或其他原因。
MQ将消息存在自己内存,还没有持久化,自己挂了。
消费者收到了消息还没有处理,自己挂了,mq以为消费成功了
解决方法: 开启rabbitMQ的事务 或开启confirm模式
开启rabbitMQ持久化
关闭rabbitMQ自动ACK.
网友评论