有没有一种方法可以用Java中的stash开始Akka类型的行为
?原因很简单,在第一个阶段,行为
等待某种消息,用它初始化自己,并且应该对每隔一条消息stash()
,直到它得到该消息,然后unstash()
,并照常进行。
对于函数,这当然很容易做到,但是对于abstractBehavior
和createReceive()
方法,是否有一种方法可以做到这一点,因为该方法不允许我通过Behaviors.withstash(stash->...)
返回一个存储的行为
,因为它需要一个receive
?
在OO API中,我希望方法是通过构造函数args从静态create
方法注入stash。
// Apologies if this Java is atrocious
public class ActorWithAStash extends AbstractBehavior<ActorWithAStashCommand> {
public static Behavior<Command> create() {
Behaviors.setup(context ->
Behaviors.withStash(100, stash ->
new ActorWithAStash(context, stash)
)
);
}
public interface Command;
private ActorWithAStash(ActorContext<Command> context, StashBuffer<Command> stash) {
this.context = context;
this.stash = stash;
}
private ActorContext<Command> context;
private StashBuffer<Command> stash;
}
关于如何解决此错误的建议,以便我可以使用最新版本的akka、akka streams和akka HTTP?谢了!
Akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。 Actor模型并非什么新鲜事物,它由Carl Hewitt于上世纪70年代早期提出,目的是为了解决分布式编程中一系列的编程问题。其特点如下: 系统中的所有事物都可以扮演一个Actor Actor之间完全独立 在收到消息时Actor所采取的所有动作都是并行的,在一个方法中
Lighthouse 是一个简单的 Akka.Cluster(Akka.NET)服务发现平台,旨在更容易部署 Azure/Elastic Beanstalk/AppHarbor 等 PaaS。 Lighthouse 的运行原理:Lighthouse 在静态地址上运行,在部署其它 Akka.Cluster 服务时不会更新,在其它应用部署、重新部署、按比例缩放等过程中,Lighthouse 只是作为一
我确实尝试实现了这两种解决方案,但在实现的每个阶段都有许多设计选择,因此即使在一条“正确”的道路上,似乎也很容易搞砸。 1虽然我相信它是可以忽略不计的,而且是akka-http服务器运行的相同方式。
我有以下代码块调用两个请求略有延迟。 在actor1和actor2中,我调用了一个REST请求,该请求返回一个cookie和响应消息。我在这里的意图是延迟发送与actor2对应的REST请求。然而,我从日志中观察到,请求立即从两个参与者发送,只有响应处理(在两个未来之间)延迟10秒。这是Akka中调度器的预期行为吗?如果我想在上述情况下延迟两个参与者之间的请求启动,我可以使用线程。睡觉(我在某个地
Akka 使用 Actor 模型来提高抽象级别,它提供了一个更好的平台来构建正确的、并发的和可扩展的应用。在错误容忍度(fault-tolerance)上,它采用的是 ‘Let it crash’ 模型,该模型被成功地应用于电信业,用于构建永不停歇的自愈系统。Actor 提供了对透明分布的抽象,以及构建真正可扩展和高错误容忍度应用的基础。 应用的 actor 系统 Akka 可以和一些叫做 Act