Playframework Akka的语言和产品选择是什么?

Playframework Akka的语言和产品选择是什么?,playframework,rabbitmq,akka,actor,erlang,Playframework,Rabbitmq,Akka,Actor,Erlang,现在我正在看并且非常喜欢它。在游戏中提供的功能中,一个重要的部分是 为了更好地理解Akka以及如何正确使用它,您能告诉我其他语言或产品的替代方案是什么吗 和它相比怎么样?有很多重叠吗?将它们结合使用是否可行?在什么使用情形下?最好从一个开始。我认为与Akka最接近的产品/框架是语言。我猜(我没有使用Play框架)Akka是用来实现Comet和其他异步处理的 在思想(发送消息的基础设施)上有些相似,请注意RabbitMQ甚至是用语言编写的,但它们的用例略有不同。我想说,RabbitMQ关注的是消息

现在我正在看并且非常喜欢它。在游戏中提供的功能中,一个重要的部分是

为了更好地理解Akka以及如何正确使用它,您能告诉我其他语言或产品的替代方案是什么吗


和它相比怎么样?有很多重叠吗?将它们结合使用是否可行?在什么使用情形下?

最好从一个开始。我认为与Akka最接近的产品/框架是语言。我猜(我没有使用Play框架)Akka是用来实现Comet和其他异步处理的


在思想(发送消息的基础设施)上有些相似,请注意RabbitMQ甚至是用语言编写的,但它们的用例略有不同。我想说,RabbitMQ关注的是消息传递,而Akka更多的是参与者(消息接收者和发送者)。

我能提供的最好建议,正如Play 2.0加入Typesafe并开始更多地使用Akka时我也经历了同样的思考过程一样,就是搜索“参与者模型”

维基百科是一个很好的资源。它有一个支持actor模型的编程语言列表,还有一个基于actor模型的框架列表(包括Akka)

简单地说,Actor模型是基于并发计算模型中的Actor概念的。参与者并不一定意味着传递消息,但大多数常见的用例都会有参与者传递消息(这就是rabbitMQ的相似之处)。

我使用+Spring AMQP+Guava的EventBus来使用接收到的消息自动注册类似参与者的信使

与春天的AMQP和Akka的相似之处是不可思议的。SpringAMQP几乎相当于一个演员

然而,就所有意图和目的而言,RabbitMQ比Akka更强大,因为它有许多不同语言的客户端实现提供持久性(持久队列),拓扑路由可插拔QoS算法

也就是说,Akka更方便,理论上Akka可以完成上述所有工作,有些人编写了扩展,但大多数人只是使用Akka,然后让Akka通过RabbitMQ传递消息。另外,Spring AMQP SimpleMessageListener容器有点重,如果您创建了数百万个容器,则不清楚会发生什么


<强>后,我会考虑使用Akka到RabbMQQ而不是Spring AMQP作为未来的项目。< /强>

< P> AKKA是一个工具包和运行时,用于构建<强>并发<强> >强>分布式< /强>系统。为了实现这一点,Akka使用了演员模型。如果您正在寻找Akka的替代方案,我认为您无法找到像Akka这样的完整解决方案,因为Akka具有多个功能,使您能够开发健壮的并发&分布式系统:

  • 阿克卡演员
  • 参与者路由、监督和监控
  • 异步和非阻塞消息传递
  • Akka集群(用于集群管理)
  • Akka持久性(用于实现事件源、持久性参与者和至少一次传递消息)
  • Akka I/O(用于TCP和UDP通信)
  • Akka HTTP(用于作为客户端或服务器的HTTP通信)
  • Akka流(用于流处理)
但是我建议看一下和。

是一个低延迟的微服务库。 一个完整的解决方案,使您能够开发健壮的并发和分布式系统

像阿克卡: -它基于流言蜚语和游泳协议。 -其消息驱动基于protobuf(全双工)。 -它适用于JVM。 -低延迟,大约快6倍。 -使用经证明比akka流更快的RxJava

与阿克卡不同: -它不那么固执己见 -不是一个框架。
-不强迫演员模式作为整体模式。

你也可以考虑使用VITTX,这也是一个反应平台

在那里你可以考虑与演员范式相似的Vistice()。


与Akka()的数据总线类似的EventBus

RabbitMQ是AMQP代理,即传输。Akka是一个并发性/可伸缩性/容错工具包。您可以将AMQP用作Akka Actor邮箱或Akka远程传输。感谢您的回答,我只是想说明一下,如果我有多个java应用程序,我希望它们能够通信,我需要rabbitmq。例如,2个独立的播放2个应用程序,独立的机器,akka不能作为加入框架,我需要jms或rabbitmq,对吗?你可以使用远程参与者“加入”JVM,它们带有基于Netty的默认传输。@ViktorKlang使用AMQP作为持久邮箱感觉不太对。AMQP在PubSub /消息传递场景中闪亮,而对于耐用邮箱,我宁可考虑某种类型的专用存储(ReDIS、文件系统等)小的修改,影响很大:演员只能传递消息,这是概念的本质。参与者是计算模型,而rabbitMQ是传递消息的手段,因此它们生活在不同的抽象级别上。Akka支持持久邮箱,这与rabbitMQ提供的持久队列类似。是的,我最近发现了这一点。我对Akka的主要不满是,如果您使用Java与它进行接口,那么您似乎必须进行大量的转换。另一件事是,在python等其他语言中也有amqp客户端。AMQP是一种标准的有线协议,因此不排除Akka或任何编程语言或操作环境将其用作与用其他编程语言编写的客户端通信的传输。是的,这是正确的,正如我在回答中指出的,Akka有扩展。你仍然需要在Akka的基础上加入一些来与其他技术交流。Akka还有几个其他问题,你必须非常注意当地人