繁体   English   中英

如何将Spring gcp PubSubTemplate连接到本地实例?

[英]How to connect spring gcp PubSubTemplate to local instance?

我正在使用spring boot starter spring-cloud-gcp-starter-pubsubPubSubTemplate 它与实际的GCP完美配合,但是现在我想将其用于本地Google PubSub模拟器的测试中。 如何提供我的自定义网址,端口和没有凭据?

或者我必须像本例一样恢复使用纯Google sdk


编辑

我的应用程序中只有一个bean:

@Service
class TestLocalPubsub(pubSubTemplate: PubSubTemplate)

application.properties:

spring.cloud.gcp.pubsub.emulator-host=localhost:8085

当我运行该应用程序时,我得到:

原因:java.io.IOException:应用程序默认凭据不可用。 如果它们在Google Compute Engine中运行,则可用。 否则,必须定义环境变量GOOGLE_APPLICATION_CREDENTIALS,指向指向定义凭据的文件。 有关更多信息,请参见https://developers.google.com/accounts/docs/application-default-credentials 在com.google.auth.oauth2.DefaultCredentialsProvider.getDefaultCredentials(DefaultCredentialsProvider.java:132)〜[google-auth-library-oauth2-http-0.12.0.jar:na] ...

但是当然,链接显示的是gcloud sdk,而不是pubsubtemplate

如您所链接的文章中所述,有几种方法可以使spring连接到仿真器:

  • 设置环境变量SPRING_CLOUD_GCP_PUBSUB_EMULATORHOST=locahost:8085 (如果使用默认的仿真器端口
  • 或在Spring应用程序属性中设置spring.cloud.gcp.pubsub.emulator-host=localhost:8085

对于测试,可以通过在test / main / resources中创建application.properties并设置spring.cloud.gcp.pubsub.emulator-host=localhost:8085来使用第二种方法。 您无需覆盖任何自定义凭据。

为了使您的测试能够与模拟器一起使用,您需要提前在模拟器中创建主题和订阅。 GCP文档显示了如何通过安装Python Google Cloud Client库手动执行此操作: https : //cloud.google.com/pubsub/docs/emulator 否则,您的测试需要使用SDK创建它们。

这是将Spring与pubsub模拟器一起使用并使用Java SDK创建主题/订阅的完整示例: https : //github.com/nhartner/pubsub-emulator-demo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM