问题描述
我正在使用版本为 rabbitmq:3-management
的 Rabbitmq docker 图像。
docker run -d --hostname my-rabbit --name ecomm-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management
我很好奇它在队列中存储 msg 的方式(如果持久数据在 disk 而不是 RAM)。
我已阅读 this post 并且接受的答案是:
RabbitMQ 使用自定义的 DB 来存储消息,DB 通常是 位于此处:
/var/lib/rabbitmq/mnesia/rabbit@hostname/queues
然而,当我导航到这个文件夹时,我没有看到。
我的问题是: 存储 DB 文件的文件夹/文件是什么?类型或结构是什么样的?
解决方法
要回答第一个问题,请查看 RABBITMQ_MNESIA_DIR
here 部分。以下是默认值,除非明确设置 RABBITMQ_MNESIA_DIR
。
- 通用 UNIX 包:
$RABBITMQ_HOME/var/lib/rabbitmq/mnesia
- Ubuntu 和 Debian 软件包:
/var/lib/rabbitmq/mnesia/
- 每千次展示收入:
/var/lib/rabbitmq/plugins
- MacOS (Homebrew):
${install_prefix}/var/lib/rabbitmq/mnesia
,Homebrew 前缀通常是/usr/local
- Windows:
%APPDATA%\RabbitMQ
您将看到一些 .dcd
和 .dcl
文件。这意味着我们有一个 mnesia database。为了验证这一点,
> erl -mnesia dir '"/var/lib/rabbitmq/mnesia/rabbit@YOUR_CONTAINER_ID"'
1> mnesia:start().
ok
2> mnesia:system_info().
# here you will see tables like `rabbit_durable_exchange`