googlecloudpubsub:java.lang.IllegalStateException: 找不到 TLS ALPN 提供程序;没有可用的 netty-tcnative、Conscrypt 或 Jetty NPN/ALPN

问题描述

当我尝试在本地 Windows 环境中的 scala sbt 项目中运行谷歌云订阅者时,我遇到了这个问题。使用的版本如下:

java : 1.8.0_171"

scala : 2.11.8

以下是sbt库依赖的版本:

"com.google.cloud" % "google-cloud-pubsub" % "1.108.1","com.google.cloud" % "google-cloud-shared-dependencies" % "0.8.6" pomOnly(),"com.google.api.grpc" % "grpc-google-cloud-pubsub-v1" % "1.90.1","io.grpc" % "grpc-all" % "1.30.2"

部署是通过使用 sbt 程序集插件在 nohup 构建中运行胖 JAR 来完成的。

这是我得到的错误日志:

Caused by: java.lang.IllegalStateException: Expected the service InnerService [Failed] to be RUNNING,but the service has Failed
        at com.google.common.util.concurrent.AbstractService.checkCurrentState(AbstractService.java:366)
        at com.google.common.util.concurrent.AbstractService.awaitRunning(AbstractService.java:302)
        at com.google.api.core.AbstractApiService.awaitRunning(AbstractApiService.java:96)
        at services.externalservices.pubsub.GoogleCloudSubscriber$class.subscribeAsyncExample(GoogleCloudSubscriber.scala:89)
        at services.externalservices.pubsub.GoogleCloudSubscriber$class.initialise(GoogleCloudSubscriber.scala:37)
        at services.externalservices.pubsub.GoogleCloudSubscriberImpl.initialise(GoogleCloudSubscriber.scala:95)
        at services.externalservices.pubsub.GoogleCloudSubscriber$class.$init$(GoogleCloudSubscriber.scala:27)
        at services.externalservices.pubsub.GoogleCloudSubscriberImpl.<init>(GoogleCloudSubscriber.scala:95)
        at services.externalservices.pubsub.GoogleCloudSubscriberImpl$$FastClassByGuice$$a4a053ae.newInstance(<generated>)
        at com.google.inject.internal.DefaultConstructionProxyFactory$FastClassproxy.newInstance(DefaultConstructionProxyFactory.java:89)
        at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:111)
        at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:90)
        at com.google.inject.internal.ConstructorBindingImpl$Factory    .get(ConstructorBindingImpl.java:268)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter$1.call(ProviderToInternalFactoryAdapter.java:46)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
        at com.google.inject.internal.ProviderToInternalFactoryAdapter.get(ProviderToInternalFactoryAdapter.java:40)
        at com.google.inject.internal.SingletonScope$1.get(SingletonScope.java:194)
        at com.google.inject.internal.InternalFactoryToProviderAdapter.get(InternalFactoryToProviderAdapter.java:41)
        at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:205)
        at com.google.inject.internal.InternalInjectorCreator$1.call(InternalInjectorCreator.java:199)
        at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1085)
        at com.google.inject.internal.InternalInjectorCreator.loadEagerSingletons(InternalInjectorCreator.java:199)
        at com.google.inject.internal.InternalInjectorCreator.injectDynamically(InternalInjectorCreator.java:180)
        ... 9 more
Caused by: java.lang.IllegalStateException: Could not find TLS ALPN provider; no working netty-tcnative,Conscrypt,or Jetty NPN/ALPN available
        at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.defaultSslProvider(GrpcSslContexts.java:233)
        at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:144)
        at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:93)
        at io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder.buildTransportFactory(NettyChannelBuilder.java:414)
        at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:513)
        at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createSingleChannel(InstantiatingGrpcChannelProvider.java:314)
        at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.access$1600(InstantiatingGrpcChannelProvider.java:71)
        at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider$1.createSingleChannel(InstantiatingGrpcChannelProvider.java:210)
        at com.google.api.gax.grpc.ChannelPool.create(ChannelPool.java:72)
        at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel(InstantiatingGrpcChannelProvider.java:217)
        at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel(InstantiatingGrpcChannelProvider.java:200)
        at com.google.api.gax.rpc.ClientContext.create(ClientContext.java:156)
        at com.google.cloud.pubsub.v1.stub.GrpcSubscriberStub.create(GrpcSubscriberStub.java:272)
        at com.google.cloud.pubsub.v1.Subscriber.doStart(Subscriber.java:273)
        at com.google.api.core.AbstractApiService$InnerService.doStart(AbstractApiService.java:148)
        at com.google.common.util.concurrent.AbstractService.startAsync(AbstractService.java:248)
        at com.google.api.core.AbstractApiService.startAsync(AbstractApiService.java:120)
        at com.google.cloud.pubsub.v1.Subscriber.startAsync(Subscriber.java:265)

但是,当使用 sbt run 命令在前台运行应用程序时,同一订阅者按预期工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)