我花了最后一周深入研究Akka文档,最终了解了什么是actor系统,以及它们解决的问题。
我对传统的JMS / AMQP消息代理的理解(和经验)是,它们存在以提供以下功能:
- 生产者和消费者之间的异步处理;和
- 消息传递保证,包括持久性,重试和回退
但是,如果没有所有必需的基础架构和运营开销,Akka是否可以提供此服务?
- 在Akka中,所有Actor通信都是异步且无阻塞的。和
- 在Akka中,
SupervisorStrategies
存在完成重试,后备和升级的功能。如果也需要的话,可以将Actor配置为持久存储到几乎任何类型的商店。
因此,这让我感到奇怪:如果我的应用程序使用Akka,是否需要将JMS / AMQP代理(例如ActiveMQ,RabbitMQ,Kafka)带入图片?换句话说,是否曾经有过这样的用例,那就是基于Akka的新应用程序还需要引入新的 JMS / AMQP代理集群?为什么或者为什么不?
唯一的论点是,也许我的Akka应用程序必须与另一个系统集成。但是在那种情况下,Akka-Camel模块使Akka可以利用Camel详尽无穷的,几乎无限的集成功能列表(TCP,FTP,ZeroMQ,这个列表不胜枚举……)。
有什么想法吗?