微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

io.grpc.StatusRuntimeException: 从 Google Cloud PubSub 获取主题发布者名称时 DEADLINE_EXCEEDED

如何解决io.grpc.StatusRuntimeException: 从 Google Cloud PubSub 获取主题发布者名称时 DEADLINE_EXCEEDED

我们的应用程序使用 Google PubSub(发布者-订阅者)进行跨服务的异步通信。在应用程序中的一项服务中,它会检查主题(发布者)名称是否存在于 PubSub 中。如果它在 PubSub 中不存在,则该服务具有在重新启动时创建主题(发布者)名称的逻辑,否则它会记录该主题(发布者)名称已存在于 Google PubSub 中的消息。

问题描述:

  • 在其中一项服务中构建了一项新功能,其中 JSON 存储在文件中并上传到 AWS S3。
  • 作为该功能的一部分,需要将 AWS S3 依赖项添加到 Gradle 文件中。
  • 在 Gradle 启用 AWS S3 依赖项后,PubSub 无法获取主题名称(已存在于 PubSub)并引发异常"io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED"。此外,服务无法将消息发布到引发异常 "java.util.concurrent.TimeoutException"主题
  • 在 Gradle 中禁用 AWS S3 依赖项后,PubSub 能够获取主题(发布者)名称,并且能够将消息发布到同样按预期工作的主题

总结:

  • 在 Gradle 中禁用 AWS s3,PubSub 按预期工作。
  • 在 Gradle 启用 AWS s3,PubSub 抛出异常。
// Reading the PubSub Configurations from file
File file = new File(ServiceConfigJson.PUBSUB_CONfig_FILE_PATH); 
InputStream stream = new FileInputStream(file);

// Authenticating and Checking whether topic name exists or not 
AuthCredentials.ServiceAccountAuthCredentials auth = AuthCredentials.createForjson(stream);
pubsub = PubSubOptions.builder().projectId("anna-us").authCredentials(auth).build().service();
Topic pubSubTopic = pubsub.getTopic(topicName);

if (pubSubTopic == null)
{
   // Creates the new topic
   Topic topic = pubsub.create(TopicInfo.of(topicName));
   logger.debug("PubSubTopic with topic name {} created",topic.name());
}
else
{
   logger.info("PubSubTopic with topic name {} already exists",topicName);
}

如果有人能对此提供见解,那将是非常有帮助的。

使用的版本:

compile group: 'com.google.cloud',name: 'google-cloud-pubsub',version: '0.4.0'
compile group: 'com.amazonaws',name: 'aws-java-sdk',version: '1.11.931'

解决方法

通过添加一个仅用于 AWS S3 而不是整个 AWS 开发工具包的库,我改变了我对 Gradle 的依赖。

compile group: 'com.amazonaws',name: 'aws-java-sdk',version: '1.11.931'compile group: 'com.amazonaws',name: 'aws-java-sdk-s3',version: '1.11.934'

更改此设置后,PubSub 开始为我正常工作。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。