当前位置: 首页 > 知识库问答 >
问题:

GRPC调用失败,错误为“从服务器收到数据帧上的意外EOS”

墨翔宇
2023-03-14

我正在使用GRPC连接到服务。有时调用成功,有时调用失败,异常情况是从服务器收到数据帧上的意外EOS

我找不到这样做的原因。以下是代码生成通话:

public class LmServiceClientImpl implements LmServiceClient {

    LMAttributeServiceGatewayGrpc.LMAttributeServiceGatewayBlockingStub lmAttributeServiceGatewayBlockingStub;

    @Autowired
    @Qualifier("lmservice")
    private ManagedChannel managedChannel;

    @PostConstruct
    public void init() {
        lmAttributeServiceGatewayBlockingStub = LMAttributeServiceGatewayGrpc.newBlockingStub(managedChannel);
    }

    @Override
    public LMAttributesApiProto.IpAttributeResponse getAttributes(
            final LMServiceProto.IpEntityRequest ipEntityRequest
    ) {
        try {
            log.info("Querying DLM service with payload {}",
                    JsonFormat.printer().print(ipEntityRequest.toBuilder()));
        } catch (final Exception e) {
            // No action required
        }
        final LMAttributesApiProto.IpAttributeResponse ipAttributeResponse =
                lmAttributeServiceGatewayBlockingStub.getAttributes(ipEntityRequest);

        try {
            log.info("Response from DLM service {}", JsonFormat.printer().print(ipAttributeResponse.toBuilder()));
        } catch (final Exception e) {
            // No action required
        }
        return ipAttributeResponse;
    }
}

ManagedChannel正在从以下类自动连接:

public class LmServiceGrpcConfig {

    @Value("${lm.server.host}")
    private String host;

    @Value("${lm.server.port}")
    private int port;

    @Bean("lmservice")
    public ManagedChannel prepareManagedChannel() {
        return NettyChannelBuilder.forAddress(host, port)
                .usePlaintext()
                .build();
    }

}

客户端依赖:

def grpcVersion = '1.26.0'
compile group: 'io.netty', name: 'netty-all', version: '4.1.44.Final'
    compile group: 'io.grpc', name: 'grpc-protobuf', version: "${grpcVersion}"
    compile group: 'io.grpc', name: 'grpc-stub', version: "${grpcVersion}"
    compile group: 'io.grpc', name: 'grpc-services', version: "${grpcVersion}"
    compile group: 'io.grpc', name: 'grpc-okhttp', version: "${grpcVersion}"
    compile 'com.google.protobuf:protobuf-java:3.5.1'
    compile 'com.google.protobuf:protobuf-java-util:3.5.1'

    compile group: "io.github.lognet", name: "grpc-spring-boot-starter", version: "3.4.1"

服务器位于golang,使用google。戈朗。org/grpc v1。25.1

不确定是什么导致了这个问题。请帮忙。我看过一些关于github问题的帖子,但这没有帮助。


共有1个答案

陶唯
2023-03-14
匿名用户

我相信这条消息意味着请求超时了。特使通过发送“流结束”(EOS)消息来缩短流。

在服务器上,您可能还会看到如下内容:

akka.http.scaladsl.model.http2.PeerClosedStreamException: Stream with ID [15655] was closed by peer with code NO_ERROR(0x00)

根据请求超时特使文件:

此超时与流请求不兼容。

 类似资料:
  • 我有一个for go项目,它有一个步骤来生成protobuf源代码。最小的可复制示例是(假设安装了所有必需的依赖项,并且正确定位了proto文件): 您可以在以下位置查看完整版本:https://github.com/cqfn/degitx/blob/master/proto/makefile 它在Linux和CI管道上正常工作,但在WSL下的Windows上失败,并出现错误: 语法错误:“(”意

  • 问题内容: 好的,所以我创建了一个测试项目,只是为了验证jQuery AJAX是否可以与asp.net服务一起使用,并且没有问题。我使用了在VS Studio中创建的默认HelloWorld服务。我通过jQuery这样调用服务: 在Default.aspx中: 在TestService.asmx中 然后,我继续进行操作,并完全复制了项目中的所有内容,但它不起作用。我收到500个服务器错误。 我验证

  • 我在Python 3上创建了简单的蓝牙RFCOMM服务器 这是我的代码: 当我从android设备应用程序发送数据时,比如BlueTerm、BlueTerm2、Bluetooth Terminal(…)我从PyCharm获得了截图 我的文本数据前面的符号是什么意思?我怎么能只打印我的字符串?

  • 我正在尝试使用。这是我用于执行ajax调用的代码: 所以我在响应中得到了一个有效的json对象,但是不知何故浏览器抛出了一个。实际错误是: 未捕获的语法错误:意外标记: 选择缩进=打开 棘手的是,当我在浏览器中检查时,响应标题是。我怎样才能解决这个问题?请帮帮我。。。

  • 在客户端,很容易为服务器添加元数据: 以上内容可以在服务器上访问,如下所示: 现在,如果我们需要将元数据从服务器发送到客户端,我们会这样做: 请注意,我们正在传递错误,实际响应为null。 如何传递错误和非空响应以及元数据? 如果我执行以下操作,它似乎不起作用,因为没有错误就无法访问客户端上的元数据。 gRPC规范是否明确禁止在没有错误时从服务器向客户端发送元数据? 此外,在我们讨论这个问题时,我

  • OpenStack-Kilo OS-CentOSLinux7.2.1511(Core) 应用 /var/tmp/packstack_ /var/tmp/packstack 应用 /root_redis.pp 10.xx.xxx.xx_mongodb.pp:[ERROR] 应用Puppet清单[ERROR] 错误:在Puppet运行期间出现错误:10.xx.xxx.xx_mongodb.pp 错误: