我有一个在Google Compute Engine实例中运行的
Java应用程序.我正在尝试使用
google-cloud library将消息发布到Cloud Pub / Sub主题,并且我收到了DEADLINE_EXCEEDED异常.代码如下所示:
PubSub pubSub = PubSubOptions.getDefaultInstance().toBuilder()
.build().getService();
String messageId = pubSub.publish(topic, message);
结果是:
com.google.cloud.pubsub.PubSubException: io.grpc.StatusRuntimeException: DEADLINE_EXCEEDED
documentation表明此响应通常是由网络问题引起的.我的网络部分是否需要配置以允许Compute Engine到达Pub / Sub?存在default-allow-internal防火墙规则.
我已经使我的Compute Engine服务帐户成为Pub / Sub主题权限中的编辑和发布者.
该应用程序驻留在Container Engine管理的Compute Engine实例中的Docker容器中. Pub / Sub主题和Compute Engine实例位于同一个项目中.我可以使用google-cloud库连接到其他Cloud Platform服务,例如Datastore.我也能够从同一项目中的App Engine实例发布到相同的Pub / Sub主题.
使用google-api-services-pubsub API库而不是谷歌云,我会有更多的运气吗?
最佳答案 我目前有同样的问题,并在
google-cloud-java issue tracker on GitHub创建了一个问题,因为我找不到它.
我们从旧的google-api-services-pubsub libraries(已工作)切换到new ones并获得例外.我们的Java应用程序也在Compute Engine实例上运行.