Как подключить Spring gcp PubSubTemplate к локальному экземпляру?

Я использую пружинный стартер spring-cloud-gcp-starter-pubsub а также PubSubTemplate, он отлично работает с реальным GCP, но теперь я хочу использовать его для своих тестов с локальным эмулятором Google PubSub. Как я могу предоставить свой собственный URL, порт и без учетных данных?

или я должен вернуться к использованию простого Google SDK, как в этом примере


РЕДАКТИРОВАТЬ:

у меня есть только один компонент в моем приложении:

@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

1 ответ

Как упоминалось в сообщении, которое вы связали, существует несколько способов заставить Spring подключиться к эмулятору:

  • Установите переменную среды SPRING_CLOUD_GCP_PUBSUB_EMULATORHOST=locahost:8085 (если используется порт эмулятора по умолчанию
  • Или установить spring.cloud.gcp.pubsub.emulator-host=localhost:8085 в свойствах приложения Spring

Для тестов вы можете использовать второй метод, создав application.properties в test / main / resources и установив 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

Другие вопросы по тегам