1

我创建了一个名为 hello-lagom 的示例 Lagom 项目,一切似乎都运行良好。但是,当我尝试通过首先启动服务定位器然后运行项目来运行 helloworld-impl 项目时,如下所示:

activator lagomServiceLocatorStart
activator helloworld-impl/run

控制台显示服务定位器正在运行:

[info] Service locator is running at http://localhost:8000
[info] Service gateway is running at http://localhost:9000
[success]

然而,Lagom 在启动 helloworld-impl 服务时抛出连接被拒绝异常:

c.l.l.j.p.InitServiceLocatorHolder - Cassandra server name=[cas_native]
couldn't be registered to the service locator.
java.net.ConnectException: Connection refused: localhost/127.0.0.1:8000

使用 lagomCassandraStart 启动嵌入式 cassandra 并没有帮助。不仅 cassandra 服务而且 helloworld-impl 无法注册到服务定位器。我试图 telnet 端口,但它返回连接被拒绝。

这可能是仅在尝试独立运行服务时发生的错误,还是我可能缺少某些东西?

4

1 回答 1

1

问题是您的第一个命令activator lagomServiceLocatorStart启动了嵌入式服务定位器,但服务定位器也在命令执行后立即停止(因为您的激活器会话已经结束)。我们在激活器会话结束时自动停止嵌入式服务定位器的原因是为了避免资源泄漏。

您在这里有三个解决方案:

1)连接两个任务,以便它们将在同一个激活器会话中执行:activator lagomServiceLocatorStart helloworld-impl/run

2)首先进入一个激活器会话,然后执行任务(我肯定会推荐这个超过1,因为你不会每次都为启动激活器付出时间惩罚):

$ activator
> lagomServiceLocatorStart
> helloworld-impl/run

3)使用 LagomrunAll任务而不是手动启动服务定位器和您的服务,因为它会为您处理这些(除非您有充分的理由不这样做,否则请使用它):

$ activator
> runAll
于 2016-05-22T07:11:01.227 回答