Ответ 1
RabbitMQ использует собственную базу данных для хранения сообщений, база данных обычно находится здесь:
/var/lib/rabbitmq/mnesia/[email protected]/queues
Начиная с версии 3.5.5, RabbitMQ представил новый Новый кредитный поток https://www.rabbitmq.com/blog/2015/10/06/new-credit-flow-settings-on-rabbitmq-3-5-5/
Давайте посмотрим, как очереди RabbitMQ хранят сообщения. Когда сообщение входит в очередь, очередь должна определить, должно ли сообщение быть сохранено или нет. Если сообщение должно быть сохранено, то RabbitMQ сделает это сразу [3]. Теперь, даже если сообщение было сохранено на диске, это не означает, что сообщение было удалено из ОЗУ, поскольку RabbitMQ хранит кэш сообщений в ОЗУ для быстрого доступа при доставке сообщений потребителям. Всякий раз, когда мы говорим о подкачке сообщений на диск, мы говорим о том, что делает RabbitMQ, когда ему приходится отправлять сообщения из этого кэша в файловую систему.
Этот пост блога достаточно подробный.
Я также предлагаю прочитать о ленивой очереди: https://www.rabbitmq.com/lazy-queues.html и https://www.rabbitmq.com/blog/2015/12/28/whats-new-in-rabbitmq -3-6-0/
Ленивые очереди Этот новый тип очередей работает, отправляя каждое доставленное им сообщение прямо в файловую систему и загружая сообщения в ОЗУ только тогда, когда потребители приходят в очереди. Для оптимизации чтения с диска сообщения загружаются партиями.