我开始使用Java中的Finagle库并尝试使用JSON进行通信的几个基本HTTP服务。 让这成为主服务和奴隶服务。
主服务具有以下逻辑:
从服务器的逻辑是:
我有以下代码:
HttpMuxer muxService = new HttpMuxer().withHandler("/", new MasterService());
ListeningServer server = Http.serve(new InetSocketAddress("localhost", 8000), muxService);
// This method runs a Function0 closure in a Future pool.
// It sends requests to slave, and exits after the commands are sent.
sendCommands();
try {
Await.ready(server);
} catch (TimeoutException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
我的问题是:
现在,理想情况下,这项工作可能需要几秒钟才能完成。但是如果出现错误,它几乎可以立即向master报告错误报告。一旦我拨打sendCommands()
,我就可以期待奴隶尝试联系主人。
只有拨打Http.serve()
,服务器才能启动并收听吗?或者这是在Await.ready()
电话中发生的吗?
我假设后者,并在由Thread.sleep()
生成的线程中放置sendCommands()
。这需要吗?
另外,还有一种更好的方法可以在主服务器上干净地启动此命令发出线程吗?
答案 0 :(得分:0)
好的,经过一些测试,我发现了这一点。
对Http.serve()
的调用启动给定端口上的服务器,传入的请求由MasterService
正确处理
Await.ready()
循环只是让线程保持活动状态。即使您使用Thread.sleep(n)