做網(wǎng)站的大公司有哪些恢復(fù)正常百度
介紹
消費(fèi)者由于各種原因而致使長(zhǎng)時(shí)間不能消費(fèi)消息造成堆積。比如有一百萬(wàn)條消息發(fā)送到mq中,消費(fèi)者這時(shí)宕機(jī)了不能消費(fèi)消息,造成了消息堆積。惰性隊(duì)列就有必要了。
正常情況下,消息保存在內(nèi)存中。消費(fèi)者從內(nèi)存中讀取消息消費(fèi),速度快。
惰性隊(duì)列,消息保存在磁盤中,消費(fèi)者從磁盤讀取消息進(jìn)行消費(fèi),速度慢。
配置惰性隊(duì)列
在web管理控制臺(tái)設(shè)置惰性隊(duì)列
通過(guò)代碼聲明?
Map<String, Object> arguments = new HashMap<>(); arguments.put("x-queue-mode", "lazy");//設(shè)置為惰性隊(duì)列 channel.queueDeclare(QUEUE_NAME, true, false, false, arguments);
內(nèi)存占用情況
例如發(fā)送一百萬(wàn)條消息,每條消息大概占1kb的情況下,普通隊(duì)列占用內(nèi)存是1.2GB,而惰性隊(duì)列占1.5mb,其他消息內(nèi)容存放在磁盤的,內(nèi)存只會(huì)存放這些消息的索引。