我正在尝试从PCF环境(春季启动应用)连接Google Pub / Sub。该应用程序已成功从certificate.json文件加载凭据,并显示了Project ID。但启动后它在错误下方打印。
c.g.a.oauth2.ComputeEngineCredentials:无法检测我们是否在Google Compute Engine上运行。 错误13-[nio-8080-exec-4] o.a.c.c.C。[。[。[/]。[dispatcherServlet]:在路径为[]的上下文中,用于Servlet [dispatcherServlet]的Servlet.service()引发异常[请求处理失败;嵌套异常为java.lang.IllegalStateException:期望服务InnerService [FAILED]正在运行,但是该服务具有FAILED],其根本原因是 java.io.IOException:应用程序默认证书不可用。如果它们在Google Compute Engine中运行,则可用。否则,必须定义环境变量GOOGLE_APPLICATION_CREDENTIALS,指向指向定义凭据的文件。有关更多信息,请参见https://developers.google.com/accounts/docs/application-default-credentials。
这是我正在使用的代码,我正在从示例Rest控制器调用此方法。
public static void subscribeAsyncExample(String projectId, String subscriptionId) {
ProjectSubscriptionName subscriptionName =
ProjectSubscriptionName.of(projectId, subscriptionId);
System.out.println("Processing messages...");
MessageReceiver receiver =
(message, consumer) -> {
System.out.println("Id : " + message.getMessageId());
System.out.println("Data : " + message.getData().toStringUtf8());
consumer.ack();
};
Subscriber subscriber = null;
try {
subscriber = Subscriber.newBuilder(subscriptionName, receiver).build();
subscriber.startAsync().awaitRunning();
subscriber.awaitTerminated();
} finally {
if (subscriber != null) {
subscriber.stopAsync();
}
}
}
pom.xml
春季启动:2.3.2。发布 spring-cloud-gcp.version:1.1.3。发布
`
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-gcp-starter-pubsub</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-pubsub</artifactId>
</dependency>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
</dependency>
`
日志: 默认项目ID为******* 服务帐户的默认凭据提供商*****-client-account@*******.gserviceaccount.com 默认使用的凭据范围:[https://www.googleapis.com/auth/pubsub、https://www.googleapis.com/auth/trace.append、https://www.googleapis.com/auth/ spanner.admin,https://www.googleapis.com/auth/cloudruntimeconfig、https://www.googleapis.com/auth/sqlservice.admin、https://www.googleapis.com/auth/devstorage.read_only, https://www.googleapis.com/auth/devstorage.read_write、https://www.googleapis.com/auth/cloud-platform、https://www.googleapis.com/auth/spanner.data、https: //www.googleapis.com/auth/datastore,https://www.googleapis.com/auth/cloud-vision]