当前位置: 首页 > 知识库问答 >
问题:

谷歌发布/子主题创建

冯沛
2023-03-14
public static void main(String args[] ){
   //project id
   String projectId = ServiceOptions.getDefaultProjectId();
   //topic id
   String topicId = args[0];

    // Create a new topic
    ProjectTopicName topic = ProjectTopicName.of(projectId, topicId);
    try (TopicAdminClient topicAdminClient = TopicAdminClient.create()) {
          System.out.println("Topics");
          topicAdminClient.createTopic(topic);
          System.out.printf("Topic %s:%s created.\n", topic.getProject(),                           
                                topic.getTopic());
    } catch(ApiException e) {
       System.out.println(e.getStatusCode().getCode());
       System.out.println(e.isRetryable());
    }
}
[INFO] Running com.example.pubsub.QuickStartIT
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 301.26 s <<< FAILURE! - in com.example.pubsub.QuickStartIT
[ERROR] testQuickstart(com.example.pubsub.QuickStartIT)  Time elapsed: 301.153 s  <<< ERROR!
org.junit.runners.model.TestTimedOutException: test timed out after 300 seconds  
        at com.example.pubsub.QuickStartIT.deleteTestSubscription(QuickStartIT.java:144)  
        at com.example.pubsub.QuickStartIT.setUp(QuickStartIT.java:80)

共有1个答案

百里修真
2023-03-14

您所提到的示例被配置为直接在Google Cloud上运行。为了使示例在本地pub/sub仿真程序上工作,您必须在代码中指定它应该连接到仿真程序主机。

主机端口应添加到代码中:

String hostport = System.getenv("PUBSUB_EMULATOR_HOST");
ManagedChannel channel = ManagedChannelBuilder.forTarget(hostport).usePlaintext().build();
try {
  TransportChannelProvider channelProvider =
      FixedTransportChannelProvider.create(GrpcTransportChannel.create(channel));
  CredentialsProvider credentialsProvider = NoCredentialsProvider.create();

  // Set the channel and credentials provider when creating a `TopicAdminClient`.
  // Similarly for SubscriptionAdminClient
  TopicAdminClient topicClient =
      TopicAdminClient.create(
          TopicAdminSettings.newBuilder()
              .setTransportChannelProvider(channelProvider)
              .setCredentialsProvider(credentialsProvider)
              .build());

  ProjectTopicName topicName = ProjectTopicName.of("my-project-id", "my-topic-id");
  // Set the channel and credentials provider when creating a `Publisher`.
  // Similarly for Subscriber
  Publisher publisher =
      Publisher.newBuilder(topicName)
          .setChannelProvider(channelProvider)
          .setCredentialsProvider(credentialsProvider)
          .build();
} finally {
  channel.shutdown();
}

您可以在公共文档中找到关于如何正确设置环境以使用本地pub/sub模拟器的更多信息。

 类似资料:
  • 我正在尝试将表单数据发布到google电子表格中。当前,如果表单已验证,则会发生以下情况: 我使用了成功设置来验证我的表单数据是否被正确序列化(它是),以及是否成功。然而,我的谷歌电子表格没有更新(没有数据通过)。我在这里使用了示例代码,将doGet更改为doPost(http://mashe.hawksey.info/2011/10/google-spreadsheets-as-a-databa

  • 我正在测试新的谷歌电子表格,因为我真的需要一个新功能:200张的限制已经取消(更多信息:https://support.google.com/drive/answer/3541068)。 但是,我不能像旧版本那样将电子表格发布到CSV。我去“档案室” 发布的“不支持的功能”文档中未提及此限制,该文档位于:https://support.google.com/drive/answer/3543688

  • 我写这封信是希望你能帮助我。出于某种原因,当我单击按钮时,我的应用程序不会启动谷歌地图,而是会将我发送回上一个活动/页面。当我再次按下该按钮时,应用程序会崩溃。 JAVA类(crkvalokacijamape.java) crkva\u lokacijamape。xml AndroidManifest.xml map_api.xml

  • 提供的检索/更新API是否有任何限制? 我找到了这些文件: https://cloud.google.com/pubsub/quotas:包含有关吞吐量的信息以及主题、订阅和消息创建数量的限制 检索/更新API的限制呢? 例如:检索具有名称的主题,更新订阅。

  • -谢谢你抽出时间。

  • 我正在寻找一种完全从代码创建发布/订阅主题的方法。我设法用域验证api验证域,但我找不到向项目注册域的api。这里描述的唯一方法https://cloud.google.com/pubsub/advanced#register与控制台的交互使用。