介绍
amqp-stats 是一个用于与 RabbitMQ 管理 API 进行交互的 npm 包。它允许从 Node.js 应用程序中查询 RabbitMQ 服务器中的队列、交换器等信息,并允许对其执行管理操作。
提供的功能包括:
- 查看队列的状态信息
- 查看交换器的状态信息
- 查看节点的状态信息
- 查看 vhost 的状态信息
- 查看消息的状态信息
- 进行管理员操作,如清理队列
安装
要使用 amqp-stats,可以将其添加到项目的依赖项中:
npm install amqp-stats
使用
下面是一个简单的例子,该例子使用 amqp-stats 从 RabbitMQ 服务器检索有关队列的信息:
-- -------------------- ---- ------- ----- --------- - ---------------------- ----- -------- ------ - ----- ----- - ----- ------------------------------------------------ ----- ------ - ----- ------------------ ------------------ ------------------- - ----------------------------
连接 RabbitMQ 服务器
连接 RabbitMQ 服务器时,需要提供管理 API 的 URL。例如,如果您的 RabbitMQ 服务器位于 http://rabbitmq.example.com,并且管理 API 启用在默认端口上,则 URL 为 http://rabbitmq.example.com:15672。
在连接服务器之前,请确保您已启用管理插件,并且具有访问管理 API 的凭据。
获取队列信息
要获取有关队列的信息,可以使用 getQueues() 方法。它将返回一个包含所有队列的对象数组。每个对象都包含以下信息:
- name: 队列名称
- vhost: vhost 名称
- messages: 未确认的消息数
- messages_unacknowledged: 未确认的消息数
- messages_ready: 等待消费的消息数
- consumers: 消费者的数量
- durable: 是否耐用
- auto_delete: 是否在连接关闭时自动删除
- node: 存储队列的节点名称
- policy: 队列策略名称(如果有)
下面是一个使用 getQueues() 方法的例子:
const queues = await stats.getQueues(); console.log(`队列数量: ${queues.length}`); for (const queue of queues) { console.log(`队列 ${queue.name} 中有 ${queue.messages} 条消息`); }
查询交换器信息
要获取有关交换器的信息,可以使用 getExchanges() 方法。它将返回一个包含所有交换器的对象数组。每个对象都包含以下信息:
- name: 交换器名称
- vhost: vhost 名称
- type: 交换器类型
- durable: 是否耐用
- auto_delete: 是否在连接关闭时自动删除
- internal: 是否为内部的
- policy: 交换器策略名称(如果有)
下面是一个使用 getExchanges() 方法的例子:
const exchanges = await stats.getExchanges(); for (const exchange of exchanges) { console.log(`交换器 ${exchange.name} 的类型是 ${exchange.type}`); }
查询节点信息
要获取有关节点的信息,可以使用 getNodes() 方法。它将返回一个包含所有节点的对象数组。每个对象都包含以下信息:
- name: 节点名称
- disk_free_limit: 指示磁盘上可供使用的空间量
- fd_used: 用于描述节点中文件描述符的数量
- mem_used: 表示节点中内存的使用情况
- sockets_used: 用于描述节点中套接字的数量
下面是一个使用 getNodes() 方法的例子:
const nodes = await stats.getNodes(); for (const node of nodes) { console.log(`节点 ${node.name} 上有 ${node.fd_used} 个文件描述符`); }
查询 vhost 信息
要获取有关 vhost 的信息,可以使用 getVhosts() 方法。它将返回一个包含所有 vhost 的对象数组。每个对象都包含以下信息:
- name: vhost 名称
- messages: 未确认的消息数
- messages_unacknowledged: 未确认的消息数
- messages_ready: 等待消费的消息数
- connections: 连接数
- node: 存储 vhost 的节点名称
- policy: vhost 策略名称(如果有)
下面是一个使用 getVhosts() 方法的例子:
const vhosts = await stats.getVhosts(); for (const vhost of vhosts) { console.log(`vhost ${vhost.name} 上有 ${vhost.connections} 个连接`); }
查询消息信息
要获取有关消息的信息,可以使用 getMessages() 方法。它将返回一个包含所有消息的对象数组。每个对象都包含以下信息:
- vhost: vhost 名称
- exchange: 交换器名称
- routing_key: 指示消息将被发送到哪个队列的路由键
- message_count: 消息数
下面是一个使用 getMessages() 方法的例子:
const messages = await stats.getMessages(); for (const { vhost, exchange, routing_key, message_count } of messages) { console.log(`在 vhost ${vhost} 中,交换器 ${exchange} 上的路由键 ${routing_key} 有 ${message_count} 条消息`); }
进行管理员操作
要执行管理员操作,可以使用如下方法之一:
- clearQueue() 清理队列
- deleteQueue() 删除队列
- publishMessage() 发布消息
这些方法都需要传入要操作的对象的名称和 vhost。例如:
await stats.clearQueue('my_queue', 'my_vhost');
结论
amqp-stats 允许从 Node.js 应用程序中轻松查询 RabbitMQ 服务器的信息。通过使用此库,可以轻松地查看队列、交换器、节点、vhost 和消息的状态信息,并可以执行管理员操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedb73fb5cbfe1ea061178d