我正在使用Spring Boot Starter spring-cloud-gcp-starter-pubsub
和PubSubTemplate
。它与实际的GCP完美配合,但是现在我想将其用于本地Google PubSub模拟器的测试中。如何提供我的自定义网址,端口和没有凭据?
或者我必须恢复为使用this example中的纯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
答案 0 :(得分:0)
如您所链接的文章中所述,有几种方法可以使spring连接到模拟器:
SPRING_CLOUD_GCP_PUBSUB_EMULATORHOST=locahost:8085
(如果使用默认的仿真器端口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