使用Scala Actors 和使用JMS有哪些区别?例如从性能和可伸缩性的角度来看,相较于JMS,Scala Actor模型提供了什么优势?在哪些情况下使用Actors比使用JMS更为合适,即Actors解决了哪些JMS无法覆盖的问题?
在设计上还存在哲学上的区别。Actor具有简单的、内置的监管者层次概念。通常采用“让它崩溃”设计。如果一个Actor由于某些原因死亡,那么另一个Actor将负责决定如何处理它,比如重新启动该Actor、杀死一组Actor并重启所有Actor,或者杀死一组Actor并自己处理问题以便让其他Actor来解决问题。这种事情可以在JMS上追加实现,但它不是API的核心,必须以某种方式进行外部管理。
顺便说一下,如果想要使用更多覆盖JMS范畴的Scala Actor库,请查看Akka。Akka还为许多常见的Actor层次结构策略提供了声明式方法。