Transactions Akka持久邮箱是否在邮件处理之前丢失邮件?

Transactions Akka持久邮箱是否在邮件处理之前丢失邮件?,transactions,message,akka,Transactions,Message,Akka,Akka声明: 持久邮箱与任何其他不太可能是事务性邮箱一样。如果参与者在收到消息后崩溃,但在完成消息处理之前,消息可能会丢失 假设参与者A使用持久邮箱作为消息队列,该队列有两条消息,M1和M2。参与者收到M1并正在处理M1。如果A在完成处理M1之前崩溃,M1是否丢失?一个相关的问题是什么意思“崩溃”:这意味着一个未被排除的异常或JVM运行崩溃?< /P> < P>崩溃的原因可能是任何东西,这个术语是指处理没有完成(要么被中断中断,要么被断电或中间中断)。参与者将邮件从邮箱中退出队列后,邮件就会从

Akka声明:

持久邮箱与任何其他不太可能是事务性邮箱一样。如果参与者在收到消息后崩溃,但在完成消息处理之前,消息可能会丢失


假设参与者A使用持久邮箱作为消息队列,该队列有两条消息,M1和M2。参与者收到M1并正在处理M1。如果A在完成处理M1之前崩溃,M1是否丢失?一个相关的问题是什么意思“崩溃”:这意味着一个未被排除的异常或JVM运行崩溃?< /P> < P>崩溃的原因可能是任何东西,这个术语是指处理没有完成(要么被中断中断,要么被断电或中间中断)。参与者将邮件从邮箱中退出队列后,邮件就会从邮箱中消失。如果不希望出现这种行为,则必须实现类似的功能,请参见。

我阅读了peek邮箱API以及文档中的示例代码。示例对邮箱而不是单个邮件调用ack()。如果邮箱中的两条消息M1和M2在开始时处于处理的中间位置。如果处理M1已完成,而M2仍由另一个参与者处理,并且该参与者调用mailbox.ack(),这是否意味着M1和M2都将从邮箱中删除?邮箱是每个参与者的专用邮箱,任何时候都不能有两封“活动”邮件。