我正在尝试让Akka进入我的Java项目,并且我已经挂了一个来自Scala的Seq类型的小问题.我能够将我的ActorRef的Java List转换为scala.collection.Seq,但我尝试使用的Akka API需要scala.collection.immutable.Seq.我该怎么做?
码:
static class Router extends UntypedLoadBalancer {
private final InfiniteIterator<ActorRef> workers;
public Router(List<ActorRef> workers) {
Seq workerSeq = asScalaBuffer(workers);
// how to get from the scala.collection.Seq above to the instance of
// scala.collection.immutable.Seq required by CyclicIterator below?
this.workers = new CyclicIterator<ActorRef>();
}
public InfiniteIterator<ActorRef> seq() {
return workers;
}
}
Run Code Online (Sandbox Code Playgroud) 我正在设计一个消耗来自无穷无尽的流中的项目的actor,并且需要一种方法来控制它何时开始和停止使用消息.是否有与演员一起实现这样的可中断循环的通用模式?我在考虑让我的演员向自己发送消息.像(伪Scala)的东西:
class Interruptible extends Actor {
val stream: Stream
val running: boolean
def receive = {
case "start" => {
running = true
consumeItem
}
case "stop" => {
running = false
}
case "consumeNext" => consumeItem
}
def consumeItem {
if (running) {
stream.getItem
this ! "consumeNext"
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是最好的办法吗?
谢谢!
在Apple上的Objective-C中,有一种称为"键值编码"的东西,它允许您使用类似于文件系统路径的字符串遍历对象图.有一个非正式的协议(即接口),允许对象根据他们要求的"密钥"返回值.例如,默认是返回由键命名的字段的值,而像NSDictionaries这样的关系集合可以实现更有趣的行为.
伪代码示例:
foo.bar = new baz();
foo.bar.mymap = new map();
foo.bar.mymap['bom'] = 2;
foo.valueForKeyPath("bar.mymap.bom") # 2
Java有这样的东西吗?这很容易实现,但我想我先看看.
我正在尝试使用Akka实现具有重试语义的作业.如果一个worker在其工作期间失败(抛出异常),除了重新启动它之外,我想重新提交它正在处理的工作.
我正在尝试的方法是一个自定义主管,但我无法让它在失败时重启工作者.例如,使用Akka 1.1.3运行以下代码,您将永远不会看到重新启动消息:
import akka.actor.ActorRef;
import akka.actor.UntypedActor;
import akka.actor.UntypedActorFactory;
import akka.config.Supervision;
import static akka.actor.Actors.actorOf;
import static java.lang.System.out;
public class Supervisor extends UntypedActor {
private ActorRef worker;
public static class Worker extends UntypedActor {
@Override
public void onReceive(Object message) {
throw new RuntimeException("croak");
}
public void preRestart(Object reason) {
out.println("supervisor is restarting me!");
}
public void postRestart(Object reason) {
out.println("supervisor restarted me.");
}
}
public static void main(String[] args) {
ActorRef supervisor = actorOf(new UntypedActorFactory() {
public UntypedActor create() …Run Code Online (Sandbox Code Playgroud) 我似乎记得有人看到有人在屏幕录像中将Java调试器附加到已编译/部署的GWT应用程序中.这可能吗?我发现一些稀疏的配置是一个特殊的"调试模块",它扩展了你的常规模块,但细节很薄.
谢谢!
我正在使用他们的内置支持在Intellij中开展一个小型GWT项目.开发模式功能,但性能非常不稳定,我只能在获得OutOfMemoryError(使用-Xmx512M)之前重新加载应用程序几次.
在开发模式下我应该能够期待什么?其他人是否经历了一致的重装时间和长时间运行流程?
我用IDEA 10.0.3运行GWT 2.2.我的应用程序很小,但我确实包括其他几个模块,如Activity,Place,Resources,Guava Collect + Base,UiBinder,Gin Inject等.我相信在添加许多依赖项之前,性能问题已经开始了.
谢谢!