gpt4 book ai didi

java - 无类型转换 (Java+Akka) : requeuing unhandled messages

转载 作者:行者123 更新时间:2023-11-29 05:38:48 25 4
gpt4 key购买 nike

我正在使用 Java+Akka 创建一个参与者系统。特别是,我通过提供 onReceive() 方法的实现来定义无类型的参与者。

在该方法中,我通过定义在收到消息时执行的逻辑来实现参与者的行为。它可能是这样的:

public void onReceive(Object msg) throws Exception {
if(msg instanceof MsgType1){ ... }
else if(msg instanceof MsgType2){ ... }
else unhandled(msg);
}

但是,如果 Actor 只对一种类型的消息感兴趣怎么办?是否可以实现选择性接收,以便 actor 等待某个消息(系统自动重新排队所有其他类型的消息)???

最佳答案

这种“a la Erlang”消息处理模式在 Akka AFAIK 中不可用。但是,您可以使用 Stash达到你想要的效果。

所以代码看起来像这样

public void onReceive(Object msg) throws Exception {
if(msg instanceof MsgType1){ ... }
else if(msg instanceof MsgType2){ ... }
else stash();
}

在消息处理的某个时刻,您会切换到另一个状态(大概是通过调用 getContext().become)。您还可以执行 unstashAll() 调用,以便将您忽略的消息重新附加到邮箱中。

关于java - 无类型转换 (Java+Akka) : requeuing unhandled messages,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18468258/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com