我在Lagom中使用流式服务调用。一旦我升级到1.4,服务器的错误消息就不会通过websockets传播到客户端。这可以使用lagomtestkit进行测试,但是在运行使用' runAll'来自SBT或现场部署。
使用' runAll',所有失败的客户来电都会以" Peer关闭连接代码1011'内部错误'"
这里的问题很容易诊断。 akka-http 10.0.11 FrameOutHandler的第66-68行创建WebSocket closeFrame,抛弃传入的异常并返回"内部错误",即使它们有异常消息。
我的问题是,虽然我可以看到错误,但我无法在不修补akka-http的情况下看到任何简单的修复方法。这是否应该在Lagom中得到支持?当我们使用netty客户端时,它曾经在1.3中工作。
答案 0 :(得分:1)
您是否正在测试另一个直接连接到服务侦听端口的Lagom客户端,或使用Web浏览器或通过端口9000连接的其他客户端?
如果是后者,您可能还需要将服务网关实施更改回Netty,如Default gateway implementation上的文档中所述:
Lagom开发环境提供了一个实现 服务网关基于Akka HTTP和(现在的遗留)实现 基于Netty。
您可以选择使用旧的
netty
实施。在Maven根项目中:
<plugin> <groupId>com.lightbend.lagom</groupId> <artifactId>lagom-maven-plugin</artifactId> <version>${lagom.version}</version> <configuration> <serviceGatewayImpl>netty</serviceGatewayImpl> </configuration> </plugin>
在sbt:
// Implementation of the service gateway: "akka-http" (default) or "netty" lagomServiceGatewayImpl in ThisBuild := "netty"
无论如何,请create an issue on GitHub我们可以在框架中调查解决方案。