AKKA:无痛的演员错误通知

Hen*_*III 5 scala akka

美丽的人生活方式

  • 一个组件BEAUTIFUL正在使用她的内部akka.actor.Actor来做某些事情......(例如"表现")

  • 还有其他MAN组件真的想与之"互动"BEAUTIFUL

  • BEAUTIFUL发现一个MAN有价值的,在与他"互动"之前,她同意接收他的电话号码(让我们称之为ErrorHandler),你知道只是给他一个电话,以防他早上离开并在床上忘了他的劳力士茶几

  • BEAUTIFUL虽然是"高维护"(还不都是..),每次有坏事发生内部BEAUTIFUL内部的演员(例如OmgBrokenNailException,UglyPurseThrowable等..),她去螺母,必须完全停止,并呼吁一个MAN使用该电话号码(如errorHandler.getOnItNowHoney( message, throwable ))

美丽的人的问题

AKKA主管允许注册两种类型的FaultHandlers => OneForOneStrategyAllForOneStrategy,如果底层Actor覆盖preRestart/postRestart,它可以访问实际的"throwable",例如:

override def preRestart( reason: Throwable ) { // do with throwable... }
Run Code Online (Sandbox Code Playgroud)

问题是这两种策略都会尝试重启Actor,这不是我要找的东西.我正在寻找演员ErrorHandler用"throwable" 调用外部并停止.

如果我不使用这些策略,当从A​​ctor中抛出异常时,在Actor postStop上调用a ,这很酷,但它不会引入"throwable":

override def postStop() { // no access to "throwable"... }
Run Code Online (Sandbox Code Playgroud)

帮助实现MAN这一目标throwable

Vik*_*ang 5

在Akka 2中你应该使用DeathWatch