Java - Akka项目的最佳实践

时间:2015-07-16 15:57:10

标签: java interface akka

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

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
}

这是一个好方法吗?

1 个答案:

答案 0 :(得分:0)

我说,就演员系统而言,取决于第三方服务似乎很自然,因为没有人可以期待它独立工作。

就接口而言,我不知道它与actor有什么关系,因为它只使用实用程序类实现。 在不了解更多关于MyUtility的情况下,如果它包含状态并且未被演员独占使用,则会出现常见的并发问题。

虽然使用质量不在控件之外的第三方服务会导致一些潜在问题,并且要求设计反映这一点:

  • 由于潜在的性能/可伸缩性问题,拦截邮件的参与者为discouraged
  • 简单地使用演员内部的未来来防止阻塞将演员的瓶颈转移到未来。如果您推送即插入消息而不询问系统是否可以处理其他消息(背压),则尤其如此。
  • Queues Don't Fix Overload是一篇关于处理队列中的负载的好文章。
  • 可能值得考虑将第三方服务放在一个单独的actor中,并使用circuit breaker以防服务有些不可靠。
  • 演员很少与其使用的服务具有相同的lifecycle,因此需要考虑后果。

希望这有帮助。