2017-08-08 2 views
1

Mit der com.google.cloud.google-cloud-Bibliothek (http://googlecloudplatform.github.io/google-cloud-java/0.21.1/index.html) habe ich den folgenden Code für den Google Cloud Platform-Pub/Sub:Google Cloud Platform Pub/Sub Publisher, wie Sie andere Anmeldeinformationen als die Standardanmeldeinformationen für die Anmeldung angeben können

TopicName topicName = TopicName.create("projectId...", "topic..."); 
    Publisher pub = Publisher.defaultBuilder(topicName).build(); 

Wie kann ich die Anmeldeinformationen angeben, die vom Herausgeber verwendet werden sollen? Ich habe sie bereits im Speicher, da sie auf andere Weise bereitgestellt werden, als sie in eine Datei zu codieren.

Alle Beispiele für benutzerdefinierte Anmeldeinformationen sind wie folgt:

Storage storage = StorageOptions.newBuilder() 
    .setProjectId(PROJECT_ID) 
    .setCredentials(GoogleCredentials.fromStream(
    new FileInputStream(PATH_TO_JSON_KEY))).build(); 
Bucket bucket = storage.create(BucketInfo.of("myBucketName")); 

Aber es gibt keine PubSubOptions oder PublisherOptions Klasse ähnlichen Code zu schreiben (ich den Fileinputstream mit einem ByteArrayInputStream ersetzen).

Hier ist jemand, der das gleiche Problem hat, aber das Code-Beispiel funktioniert nicht: https://github.com/GoogleCloudPlatform/google-cloud-java/issues/1751

Antwort

4

Sie den Anbieter von Anmeldeinformationen auf dem Erbauer einstellen:

GoogleCredentials credentials = GoogleCredentials.fromStream(
    new FileInputStream(PATH_TO_JSON_KEY))); 
Publisher pub = Publisher 
    .defaultBuilder(topicName) 
    .setCredentialsProvider(FixedCredentialsProvider.create(credentials)) 
    .build(); 

, dass nun die CallSettings gesetzt verwendet. .. aber ich nicht denke, wird es die Anmeldeinformationen verwendet, wenn Sie den Kanal selbst einrichten. (Es sieht so aus, als könnte es Unterschiede zwischen dem Java gRPC-Code und dem C# -Code geben, mit dem ich vertrauter bin.)

+0

Dieses Bit: "FixedCredentialsProvider.create (credentials)" ist genau das, was ich brauchte! Vielen Dank! – RedShift

+0

Folgefrage, woher haben Sie das abgeleitet? Ich habe jetzt eine Stunde lang die Dokumente gesucht und gelesen: - \ – RedShift

+0

@RedShift: Einfach den Quelltext durchsuchen - aber mit dem eindeutigen Vorteil, dass ich an dem Client-Bibliotheksteam für C# arbeite, und die Bibliotheken sind das nicht * anders ... also wusste ich irgendwie, wo ich hinschauen sollte :) Ich habe einige weitere Details am Ende der Antwort hinzugefügt. –

Verwandte Themen