众所周知,RabbitMQ 底层的开发语言是 Erlang,所以通过一些简单的 Erlang 操作能获得一些 RabbitMQ 的底层信息。
通过新的 Node 节点来进行连接和调用
通过命令erl -sname test
,我们先新建了一个节点。
接下来就是通过命令 net_adm:names().
来查看当前机器上的 Erlang 节点。
然后通过命令 net_adm:ping('rabbit@Asia').
来连接上 RabbitMQ 的节点。
接下来就可以通过命令 rpc:call(<node_name>, <command>, <function_name>, <parameters>)
的形式来执行命令在连接上的节点上。
通过 CLI 直接连接到 RabbitMQ 的节点
通过传入 remsh
参数来启动 Erlang 程序。
这里你会发现,我们已经直接连接到了 RabbitMQ 的节点了。接下来就让我们来查询一下 RabbitMQ 的底层数据库 Mnesia 的一些表信息。
题外话,现在如果你再次调用 nodes().
命令,你会发现我们已经连接到了 RabbitMQ 集群上的其他 Erlang 节点了。
这是在 RabbitMQ 的 Management 中获取到的信息。
根据先前的远程调用,我们已经可以获知 RabbitMQ 会创建一些数据表到数据库中。
现在让我们来进行一个查询,看看在 rabbit_user
表中有那些数据。
一些有用的 Mnesia 命令
命令:mnesia:system_info(tables).
命令:mnesia:schema('rabbit_user').