Как подключить Spring gcp PubSubTemplate к локальному экземпляру? - PullRequest
0 голосов
/ 04 марта 2019

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

или мне нужно вернуться к использованию простого 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

1 Ответ

0 голосов
/ 04 марта 2019

Как упоминалось в сообщении, которое вы связали, существует несколько способов заставить 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

...