死信
无法投递的消息与 DeathLetterEvent 订阅
当消息无法被目标 Actor 正常处理时(例如目标已终止或处于 killing 状态),系统会将消息包装为死信并交给 Guard Actor 处理。Guard Actor 将 ves.DeathLetterEvent(含原始 Envelope 与时间戳)发布到事件流,因此可通过 EventStream 订阅该类型事件做监控、审计或统计。
加载图表…
订阅死信事件
ctx.EventStream().Subscribe(ctx, ves.DeathLetterEvent{})在 OnReceive 中收到 *ves.DeathLetterEvent 时,可读取 Envelope(发送者、接收者、消息内容等)与 Time 进行诊断或告警。事件类型来自 github.com/kercylan98/vivid/pkg/ves。
说明
- 系统消息在 killing 阶段仍会被处理,不会成为死信。
- 典型触发场景:目标已终止或处于非运行状态时收到普通业务消息;远程通信在重试次数用尽后仍无法投递时,该消息会作为死信投递(可据此监控远程连接失败导致的不可达)。
- 建议在生产环境中监控死信事件,便于发现不可达目标、错误引用或配置问题。