如何立即关闭akka系统而不立即终止消息?

问题描述:

我已经写了一个测试,发送几个消息给演员在akka系统。测试完成后,akka系统将被关闭。问题在于消息在处理之前被异步处理和系统关闭处理。如何立即关闭akka系统而不立即终止消息?

有没有办法告诉akka系统等待直到邮箱中的所有邮件都会被actor处理,然后关闭?

Akka没有直接的机制来做到这一点(即没有API)。但是实现这一点的方法记录在http://letitcrash.com/post/30165507578/shutdown-patterns-in-akka-2中。检查本文中的“收割者”描述。本文还介绍了为什么这种机制不能直接在Akka中使用。

您应该使用Akka TestKit的东西,如:

override def afterAll { 
    TestKit.shutdownActorSystem(system) 
} 

看到该文档,了解更多详情。