gpt4 book ai didi

google-cloud-pubsub - com.google.cloud.pubsub.spi.v1.Publisher.publish 未将数据发送到 PubSub

转载 作者:行者123 更新时间:2023-12-02 19:35:21 26 4
gpt4 key购买 nike

对新版本 com.google.cloud.pubsub.spi.v1.Publisher.publish(pubsubMessage).get() 的调用永远挂起。我不确定问题是什么。

代码片段:

com.google.cloud.pubsub.spi.v1.Publisher publisher = Publisher.defaultBuilder(TopicName.parse("projects/" + projectId + "/topics/" + topicName))
.setChannelProvider(TopicAdminSettings
.defaultChannelProviderBuilder()
.setCredentialsProvider(FixedCredentialsProvider.create(ServiceAccountCredentials.fromStream(new FileInputStream(keyFile))))
.build())
.build();
ApiFuture<String> messageIdFuture = publisher.publish(pubsubMessage);
messageIdFuture.get() // HANGS FOREVER!!

旧的 API 在我们的地方工作得很好:

GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(new NetHttpTransport())
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(serviceAccount)
.setServiceAccountScopes(Arrays.asList(PubsubScopes.PUBSUB))
.setServiceAccountPrivateKeyFromP12File(new File(keyFile))
.build();

Pubsub pusub = new Pubsub.Builder(transport, JSON_FACTORY, credential).setApplicationName("bigquery").build();

PubsubMessage pubsubMessage = new PubsubMessage();
pubsubMessage.encodeData(message.getBytes());

PublishRequest publishRequest = new PublishRequest();
publishRequest.setMessages(Arrays.asList(pubsubMessage));
pubsub.projects().topics().publish(outputTopic, publishRequest).execute();

有人可以指出我错过了什么吗?

最佳答案

这可能是因为您尚未在 GCP 控制台中配置该主题的订阅或授予适当的权限。
需要将订阅附加到该主题。还要确保您在控制台中授予正确的权限。请注意,您给出了这个

"client_email" : (an auto-generated email id)

在控制台中自动生成的具有管理员订阅者权限的电子邮件 ID。

配置时,您将在 projectname.json 凭据文件中获取此字段。

希望有帮助。

关于google-cloud-pubsub - com.google.cloud.pubsub.spi.v1.Publisher.publish 未将数据发送到 PubSub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44295892/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com