假设我的Erlang应用程序从外部接收一条重要消息(例如,通过公开的API端点)。由于应用程序中的错误或格式不正确的消息,处理消息的过程会崩溃。
那条信息会怎么样?我怎样才能影响信息的发生呢?在进程邮箱中等待的其他消息会发生什么呢?我是否必须引入一个进程层次结构,以确保没有丢失消息?
在Erlang有类似于Akka死信队列的东西吗?假设我希望稍后处理消息--要么修复消息,要么修复应用程序本身的错误,然后重新运行消息处理。
我感到惊讶的是,关于这个话题的信息如此之少。
发布于 2015-11-03 11:01:20
没有信息,因为没有死信队列,如果应用程序在处理消息时崩溃,消息将被接收,为什么它会出现在死信队列上(如果存在的话)。
这样的队列将是一个主要的可伸缩性问题,没有多大用处(您将得到无法发送且完全脱离上下文的任意消息)。
如果您需要确保消息被处理,通常会使用一种方法在消息像gen_server调用那样被处理时得到回复。
如果您的消息如此重要,如果丢失将是一场灾难,您可能应该将其保存在外部DB中,因为否则如果您的计算机崩溃,所有正在传输的消息会发生什么变化?
https://stackoverflow.com/questions/33495254
复制相似问题