二郎死信队列

egb*_*kul 1 erlang

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

消息会怎么样?如何影响消息的发生?在进程邮箱中等待的其他邮件会发生什么?我是否必须引入流程层次结构以确保没有消息丢失?

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

我很惊讶这个主题的信息很少.

Pee*_*ger 6

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

这样的队列将是一个主要的可扩展性问题,没有太多用处(你会得到无法发送的任意消息,并且完全脱离上下文)

如果您需要确保处理消息,则通常使用一种方法在处理消息时收到回复,如gen_server调用.

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