- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在我的项目中使用 Akka (Java) 来提供重试方案。所以我有一个主管 Actor ,它在收到消息后将其委托(delegate)给受监督的 Actor 。我对主管有一个一对一的策略来重启(无条件)。
受监督的 Actor 有一个 preRestart 钩子(Hook),它将消息发送给自身。
@Override
public void preRestart(Throwable reason, Option<Object> message){
//send it to the supervisor so that it can be enqueued once again to retry
if(reason.getCause() instanceof SQLException){
log.error("Not retrying since there seems to be a problem with the SQL itself!");
super.preRestart(reason, message);
}
else{
log.warn(""+state+" Trying to redo a processing: "+((RecordData)message.get()).getRecord());
getSelf().tell(message.get(), getSender());
super.preRestart(reason, message);
}
}
现在我也想保留失败 Actor 的内部状态!我知道只有当我的策略是“恢复”时才会保留状态,但在这种情况下,不会调用 onRestart Hook 并且消息将会丢失。
问题:
1.实现此目的的唯一方法是设置消息本身的状态并重新启动吗?
2.如果状态保持顺序,那么我需要提供“有序”邮箱实现(基于出队)。这样的理解正确吗?
最佳答案
我怀疑您是否可以向处于 preRestart 阶段的 Actor 发送消息。
您的策略应该是在崩溃/重新启动时重置参与者。如果你想保留内部状态,你必须将它传递到其他地方(其他参与者、数据库),以便在新参与者启动时再次询问它。
为什么不在主管中实现更多逻辑?
如果我知道您到底使用的是哪个版本的 Akka,我会在这里发布一些示例代码。
关于java - Akka - 受监督 Actor 的重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15548976/
我想做的是改变我的主管,尽最大努力让 children 运行,但如果他们的崩溃率超过强度,就放弃。这样剩下的 child 就可以继续跑。不过,这对于现有的主管配置来说似乎是不可能的,所以看起来我唯一的
我正在处理一个大型推文数据集,我从中将一小部分数据训练为四个手动分类的类别。每个手动分类大约有二十条推文,而数据集有数万条推文。这是我用来训练模型的代码。 from sklearn.feature_e
我的 celerybeat.conf [program:celerybeat] command=/path/app/env/bin/celery beat -A project.tasks --log
正如 ZooKeeper 的文档中所说,有必要使用 daemontools 之类的工具对其进行监督。但是文档没有提供任何示例,我知道启动 ZooKeeper 的唯一方法是运行 bin/zkServer
谁能给我解释一下这个例子中的 uibutton 目标功能: 我有一个 ViewController。我向这个 View Controller 添加了一个带有两个按钮的 uiview。一个按钮是在 in
我最近熟悉了 Erlang/OTP 技术,我想将其应用于监控和监督 Java 应用程序: 检测他们的可用性 启动和停止它们 换句话说,我希望 Java 应用程序被 Erlang OTP 主管基础架构视
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: What are MVP and MVC and what is the difference? 我在网站上
我是一名优秀的程序员,十分优秀!