【问题标题】:Pubsub Java subscriber stopped receiving after a day of idlingPubsub Java 订阅者在闲置一天后停止接收
【发布时间】:2020-02-24 01:18:49
【问题描述】:

我有一个 java 代码使用一个执行程序提供程序启动一个 PubsubSubscriber。它可以空转 16 小时。但是,大约 1 天的空闲它停止接收来自订阅的消息。如果我重新启动程序,它将重新开始工作。我从文档中阅读 https://googleapis.dev/java/google-cloud-clients/latest/index.html?com/google/cloud/pubsub/v1/package-summary.html 为了让订阅者永远运行,需要一个执行者提供者。我发起了一个

ExecutorProvider executorProvider = FixedExecutorProvider.create(myScheduledExecutorService);
this.subscriber = Subscriber
                    .newBuilder(subscriptionName, this)
                    .setExecutorProvider(executorProvider)
                    .setCredentialsProvider(myCredentialsProvider)
                    .build();

上面的executorProvider是由

创建的

是否需要进行其他设置以确保订阅者继续接收消息?

【问题讨论】:

  • 您的 Pub/Sub 订阅者在哪里运行? (例如,在本地、在计算引擎中的 GCP 上、在 Kubernetes 中)
  • Kolban 订阅者在 linux box 的权限上运行。
  • 这可能是...的副本 stackoverflow.com/questions/48834419/… 那里有一个非常好的答案。如果没有别的,请查看那里提供的答案并用对这些可能性的回答来更新问题..如果没有别的将它们排除为潜力。你也可以考虑在这里提出问题github.com/googleapis/nodejs-pubsub ...但是我怀疑你也会被要求提供这篇文章中要求的答案。
  • 我以前看过那篇文章。在我的情况下,凭证是正确的,消息在收到后得到确认。我们只有一个订阅者。该帖子中提到的几乎所有内容都已针对我的情况进行了检查。一个区别是帖子使用的是 Python,而我使用的是 Java。就订阅者的行为而言,这不会造成太大差异。
  • 您有可用的日志吗?是否有可能您的 Java 应用程序正在崩溃或您的机器正在重新启动?

标签: java google-cloud-platform publish-subscribe google-cloud-pubsub


【解决方案1】:

它在哪里运行?我在使用谷歌云时遇到了我的 java bot 的问题,一个快速修复是使用屏幕。

apt-get install screen
screen

要恢复到您的机器人视图,请使用:

screen -r

也许对你有用。

【讨论】:

  • 此代码作为服务在服务器中运行。该服务是用 Java 编写的,带有 Guice 用于依赖注入。目前,我编写了自己的 rest 客户端来对抗 Pubsub rest api,并且运行了一个多星期。
  • @SamTsai 它还在运行吗?如果它还在运行,你介意更详细地分享一下你做了什么吗?
猜你喜欢
  • 2019-08-25
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 2022-01-07
  • 2019-09-21
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
相关资源
最近更新 更多