防止RabbitMQ将消息写入磁盘

防止RabbitMQ将消息写入磁盘,rabbitmq,Rabbitmq,我有一个要求,消息永远不应该写入磁盘。RabbitMQ文档说明了以下内容: 持久消息和瞬时消息都可以写入磁盘。持久消息到达队列后将立即写入磁盘,而临时消息将仅写入磁盘,以便在内存压力下从内存中逐出 “在记忆压力下”的含义有些模糊。有没有办法确保临时消息永远不会写入磁盘?在这种情况下,如果无法传递消息,则可以丢失消息。只有在服务器内存压力较高(即RAM使用率较高)的情况下,才会将临时消息刷新到磁盘。(例如,如果排队的消息数量迅速增加,可能会发生这种情况。)发生这种情况时,RabbitMQ将开始将消

我有一个要求,消息永远不应该写入磁盘。RabbitMQ文档说明了以下内容:

持久消息和瞬时消息都可以写入磁盘。持久消息到达队列后将立即写入磁盘,而临时消息将仅写入磁盘,以便在内存压力下从内存中逐出


“在记忆压力下”的含义有些模糊。有没有办法确保临时消息永远不会写入磁盘?在这种情况下,如果无法传递消息,则可以丢失消息。

只有在服务器内存压力较高(即RAM使用率较高)的情况下,才会将临时消息刷新到磁盘。(例如,如果排队的消息数量迅速增加,可能会发生这种情况。)发生这种情况时,RabbitMQ将开始将消息刷新(分页)到磁盘以释放RAM,而当这种情况发生时,排队速度将恶化。来源


根据这个线程:看起来您可以将vm\u memory\u high\u水印设置为一个非常高的值。通过这样做,RabbitMQ将在有机会写入磁盘之前被OOM杀死,因为RabbitMQ将表现为拥有大量可用内存,而它没有。

感谢链接。不过,我看不出最佳解决方案(我认为vm_memory_high_watermark选项可以完成这项工作,但需要崩溃恢复)。然而,该线程还谈到了一个RAM磁盘,这是我以前没有想到的,值得研究,所以谢谢你!