Erlang死信队列

Erlang dead letter queue

假设我的 Erlang 应用程序从外部接收到一条重要消息(例如,通过公开的 API 端点)。由于应用程序中的错误或消息格式不正确,处理消息的进程崩溃了。

邮件会怎样?我如何影响消息的处理方式?进程邮箱中等待的其他消息会怎样?我是否必须引入进程层次结构才能确保没有消息丢失?

Erlang中有类似Akka死信队列的吗?假设我想稍后处理消息 - 通过修复消息或修复应用程序本身的错误,然后重新运行消息处理。

我很惊讶关于这个主题的可用信息如此之少。

没有信息,因为没有死信队列,如果您的应用程序在处理您的消息时崩溃,那么消息已经收到,为什么它会进入死信队列(如果存在的话)。

这样的队列将是一个主要的可伸缩性问题,用处不大(您会收到无法发送的任意消息,并且完全脱离上下文)

如果您需要确保消息得到处理,您通常会使用一种方法在处理消息时获得回复,例如 gen_server 调用。

如果您的消息非常重要,如果丢失将是一场灾难,您应该将其保存在外部数据库中,否则如果您的计算机崩溃,所有传输中的消息会发生什么情况?