You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sentry如何查看/统计队列中的未发送消息?

使用@sentry/node 等待队列消息发送完成再退出应用

核心解决方案:使用flush()方法

Sentry Node SDK 内置了flush()方法,专门用于等待队列中所有未发送的事件完成上报,它返回一个 Promise,等待该 Promise 兑现即可确保消息都已发送(或超时退出)。

代码示例

const Sentry = require('@sentry/node');

// 初始化Sentry
Sentry.init({
  dsn: '你的DSN地址',
  // 其他配置项
});

// 捕获异常(同步入队,延后发送)
Sentry.captureException(new Error('测试异常'));

// 定义退出前的处理逻辑
async function handleShutdown() {
  // 设置超时时间(单位:毫秒),超过该时间强制退出
  await Sentry.flush(2000);
  process.exit(0);
}

// 监听系统退出信号,确保进程退出前执行flush
process.on('SIGTERM', handleShutdown);
process.on('SIGINT', handleShutdown);

关于检查未发送消息

SDK 内部的队列缓冲区属于私有属性(比如getCurrentHub().getClient()?._transport?._buffer),不建议直接依赖这些内部实现来检查队列状态——版本迭代时这些属性可能会被修改或移除。最可靠的方式还是通过flush()来确保所有消息发送完成,而非手动检查队列。

额外注意事项

  • 超时参数需根据实际网络情况调整,一般设置2000-5000毫秒即可,避免进程无限等待。
  • 如果是Web框架(如Express/Koa),需在关闭服务器、处理完所有请求后再调用flush(),确保请求生命周期内的异常都被上报。

内容的提问来源于stack exchange,提问作者CoderFF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:15:31