4

私は自分のコードからサブスクリプションを購読するためにJavaライブラリを使用しています。私は、加入者を書くために、このガイドに従っ "com.google.cloud" % "google-cloud-pubsub" % "0.24.0-beta"Google Pubsub:UNAVAILABLE:サービスがあなたの要求を満たすことができませんでした

を::SBTを使うhttps://cloud.google.com/pubsub/docs/pull

val projectId = "test-topic" 
val subscriptionId = "test-sub" 

def main(args: Array[String]): Unit = { 
val subscriptionName = SubscriptionName.create(projectId, subscriptionId) 
val subscriber = Subscriber.defaultBuilder(subscriptionName, new PastEventMessageReceiver()).build() 
subscriber.startAsync() 
System.in.read() 
} 


class PastEventMessageReceiver extends MessageReceiver { 
    override def receiveMessage(message: PubsubMessage, consumer: AckReplyConsumer): Unit = { 
    println(message) 
    consumer.ack() 
} 

それは素晴らしい作品、私は出版されてメッセージが送らを引くことができるが、私は私のログに毎分複数回このエラーを見続けます。

com.google.cloud.pubsub.v1.StreamingSubscriberConnection$1 onFailure 
WARNING: Terminated streaming with exception 
io.grpc.StatusRuntimeException: UNAVAILABLE: The service was unable to fulfill your request. Please try again. [code=8a75] 
    at io.grpc.Status.asRuntimeException(Status.java:526) 
    at io.grpc.stub.ClientCalls$StreamObserverToCallListenerAdapter.onClose(ClientCalls.java:385) 
    at io.grpc.internal.ClientCallImpl.closeObserver(ClientCallImpl.java:422) 
    at io.grpc.internal.ClientCallImpl.access$300(ClientCallImpl.java:61) 
    at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.close(ClientCallImpl.java:504) 
    at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl.access$600(ClientCallImpl.java:425) 
    at io.grpc.internal.ClientCallImpl$ClientStreamListenerImpl$1StreamClosed.runInContext(ClientCallImpl.java:536) 
    at io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37) 
    at io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:102) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) 
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 

私は最初のアプリを実行すると、私はそれ分ごとに複数回参照遅延の後に、そのエラーが表示されていない(1-2分程度)の小さな遅延があります。私のアプリケーションは依然として厳しいメッセージを引き出すことができます。

答えて

1

このメッセージは、Google Cloud Pub/Subライブラリの内部エラーです.Pub/Subサーバーに送信されたリクエストに切断または再試行可能なエラーが発生した場合に発生します。クライアントライブラリは、シームレスに接続を再作成し、これらのエラーでリクエストを再試行する必要があります。クライアントライブラリのバージョン0.26.0-beta以降では、have the log level set to FINEを除き、これらのエラーはログに出力されません。一般的に、このエラーが発生した後もMessageReceiverにメッセージが送信され続けるはずです。サブスクリプションが見つからないなど、クライアントライブラリ自体が再試行できないエラーは、呼び出し元に伝播されます。

-1

これは、サービスが現在あなたの要求を満たすことができないことを意味しますが、後で利用可能になる可能性があります。また、あなたのサブスクリプションコードが行い、後でいつでもメッセージを引き出すことができます。

は、それはあなたのメッセージが廃棄されていることを意味するものではありませんUNAVAILABLE

のエラーの説明を参照してください。だから、あなたはそのエラーをあまり気にしないかもしれません。

PS:このエラーの悪影響がある場合や、このエラーが処理される可能性がある場合は、gcpの皆さんからさらに知りたいと思います。

+0

"ケアレス"のアドバイスを無視したいかもしれません...このエラーが出たら、アプリケーションは引き続き実行されますが、もはやメッセージをピックアップしませんでした。アプリを再起動すると、メッセージを再び受け取るようになりますが、最終的には同じエラーが発生します。 – howMuchCheeseIsTooMuchCheese

関連する問題