(Quick Reference)
Creating an actor using a factory method
Actors.actor {
println "actor1 has started" delegate.metaClass {
afterStop = {List undeliveredMessages ->
println "actor1 has stopped"
} onInterrupt = {InterruptedException e ->
println "actor1 has been interrupted"
} onTimeout = {->
println "actor1 has timed out"
} onException = {Exception e ->
println "actor1 threw an exception"
}
}
println("Running actor1")
…
}
Sub-classing the DefaultActor class
class PooledLifeCycleSampleActor extends DefaultActor { protected void act() {
println("Running actor2")
…
} private void afterStart() {
println "actor2 has started"
} private void afterStop(List undeliveredMessages) {
println "actor2 has stopped"
} private void onInterrupt(InterruptedException e) {
println "actor2 has been interrupted"
} private void onTimeout() {
println "actor2 has timed out"
} private void onException(Exception e) {
println "actor2 threw an exception"
}
}