繁体   English   中英

Java-Akka项目最佳做法

[英]Java - Akka project best practices

我有一个围绕actor系统构建的java项目。 参与者之一需要通过我编写的Java API使用第三方服务。 但是我想知道在AKKA世界中是否有一个Java接口和一个与该actor交互的实用java类是否是一种好习惯?

MyActor.java

public class MyActor {
 @Override
 public void OnReceive(Obj o) throws Exception {
     .. do something 
     .. do something else using MyUtility.java
     .. send back the message
 }
public class MyUtility implements ItsIterface {
 ... blah
} 
interface ItsInterface {
  .. blah
}

这是一个好方法吗?

我想说,就参与者系统而言,取决于第三者服务,这似乎是很自然的事,没有人期望它能够独立运行。

就接口而言,我不知道它与actor有什么关系,因为它仅直接使用实用工具类实现。 如果不了解MyUtility ,则如果MyUtility包含状态并且不被actor专门使用,则通常会出现并发问题。

尽管使用质量超出您的控制范围的第三方服务会导致一些潜在的问题,并且要求设计反映以下几点:

  • 由于潜在的性能/可伸缩性问题, 不鼓励参与者阻塞消息。
  • 简单地从演员内部使用期货来防止阻碍将瓶颈从演员转移到未来。 如果您在不询问系统是否可以处理其他消息的情况下推送即插入消息,则尤其如此(背压)。
  • 队列不能修复过载是一篇不错的文章,它介绍了一般情况下如何处理队列中的负载。
  • 可能值得考虑将第三方服务放在单独的角色中,并使用断路器 ,以防该服务有些不可靠。
  • 参与者很少具有与其使用的服务相同的生命周期 ,因此需要考虑后果。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM