Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中尝试对Google pubsub执行同步拉取时出错_Java_Google Cloud Pubsub - Fatal编程技术网

在Java中尝试对Google pubsub执行同步拉取时出错

在Java中尝试对Google pubsub执行同步拉取时出错,java,google-cloud-pubsub,Java,Google Cloud Pubsub,我试图使用GooglePubSub订阅在Java中执行同步拉入,但是当我使用文档化的进程()时,我得到了一个错误 我已经能够在同一台服务器上用Python执行相同的函数,它返回正确的消息。所以我知道这个盒子没问题。看起来这是我的Java进程的一个问题 public void readBucket() { try { List<ReceivedMessage> myMessage = createSubscriberWithSyncPull("my-projec

我试图使用GooglePubSub订阅在Java中执行同步拉入,但是当我使用文档化的进程()时,我得到了一个错误

我已经能够在同一台服务器上用Python执行相同的函数,它返回正确的消息。所以我知道这个盒子没问题。看起来这是我的Java进程的一个问题

  public void readBucket() {
    try {
      List<ReceivedMessage> myMessage = createSubscriberWithSyncPull("my-project", "my-subscription", 1);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  static List<ReceivedMessage> createSubscriberWithSyncPull(
      String projectId, String subscriptionId, int numOfMessages) throws Exception {
    // [START pubsub_subscriber_sync_pull]
    SubscriberStubSettings subscriberStubSettings =
        SubscriberStubSettings.newBuilder()
            .setTransportChannelProvider(
                SubscriberStubSettings.defaultGrpcTransportProviderBuilder()
                    .setMaxInboundMessageSize(20 << 20) // 20MB
                    .build())
            .build();

    try (SubscriberStub subscriber = GrpcSubscriberStub.create(subscriberStubSettings)) {
      String subscriptionName = ProjectSubscriptionName.format(projectId, subscriptionId);
      PullRequest pullRequest =
          PullRequest.newBuilder()
              .setMaxMessages(numOfMessages)
              .setReturnImmediately(true) // return immediately if messages are not available
              .setSubscription(subscriptionName)
              .build();

      // use pullCallable().futureCall to asynchronously perform this operation
      PullResponse pullResponse = subscriber.pullCallable().call(pullRequest);
      List<String> ackIds = new ArrayList<>();
      for (ReceivedMessage message : pullResponse.getReceivedMessagesList()) {
        // handle received message
        // ...
        ackIds.add(message.getAckId());
      }
      // acknowledge received messages
      AcknowledgeRequest acknowledgeRequest =
          AcknowledgeRequest.newBuilder()
              .setSubscription(subscriptionName)
              .addAllAckIds(ackIds)
              .build();
      // use acknowledgeCallable().futureCall to asynchronously perform this operation
      subscriber.acknowledgeCallable().call(acknowledgeRequest);
      return pullResponse.getReceivedMessagesList();
    }
    // [END pubsub_subscriber_sync_pull]
  }
我收到以下错误消息:

2019-09-04 15:01:00,727 - ERROR [MapReduceRunner-phase-1:i.c.c.i.a.r.ProgramControllerServiceAdapter$1@97] - MapReduce Program 'phase-1' failed.
java.lang.Exception: com.google.pubsub.v1.StreamingPullRequest.emptyIntList()Lcom/google/protobuf/Internal$IntList;
        at io.cdap.cdap.internal.app.runtime.AbstractContext.lambda$initializeProgram$1(AbstractContext.java:645) ~[na:na]
        at io.cdap.cdap.internal.app.runtime.AbstractContext.execute(AbstractContext.java:600) ~[na:na]
        at io.cdap.cdap.internal.app.runtime.AbstractContext.initializeProgram(AbstractContext.java:637) ~[na:na]
        at io.cdap.cdap.internal.app.runtime.batch.MapReduceRuntimeService.beforeSubmit(MapReduceRuntimeService.java:547) ~[na:na]
        at io.cdap.cdap.internal.app.runtime.batch.MapReduceRuntimeService.startUp(MapReduceRuntimeService.java:226) ~[na:na]
        at com.google.common.util.concurrent.AbstractExecutionThreadService$1$1.run(AbstractExecutionThreadService.java:47) ~[com.google.guava.guava-13.0.1.jar:na]
        at io.cdap.cdap.internal.app.runtime.batch.MapReduceRuntimeService$2$1.run(MapReduceRuntimeService.java:450) [na:na]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_222]
Caused by: java.lang.NoSuchMethodError: com.google.pubsub.v1.StreamingPullRequest.emptyIntList()Lcom/google/protobuf/Internal$IntList;
        at com.google.pubsub.v1.StreamingPullRequest.<init>(StreamingPullRequest.java:30) ~[na:na]
        at com.google.pubsub.v1.StreamingPullRequest.<clinit>(StreamingPullRequest.java:1594) ~[na:na]
        at com.google.cloud.pubsub.v1.stub.GrpcSubscriberStub.<clinit>(GrpcSubscriberStub.java:149) ~[na:na]
2019-09-04 15:01:00727-错误[MapReduceRunner-phase-1:i.c.c.i.a.r.程序控制器服务适配器$1@97]-MapReduce程序“第1阶段”失败。
java.lang.Exception:com.google.pubsub.v1.StreamingPullRequest.emptyIntList()Lcom/google/protobuf/Internal$IntList;
在io.cdap.cdap.internal.app.runtime.AbstractContext.lambda$initializeProgram$1(AbstractContext.java:645)~[na:na]
在io.cdap.cdap.internal.app.runtime.AbstractContext.execute(AbstractContext.java:600)~[na:na]
在io.cdap.cdap.internal.app.runtime.AbstractContext.initializeProgram(AbstractContext.java:637)~[na:na]
在io.cdap.cdap.internal.app.runtime.batch.mapreducerontimeservice.beforesmit(mapreducerontimeservice.java:547)~[na:na]
在io.cdap.cdap.internal.app.runtime.batch.mapreducerontimeservice.startUp(mapreducerontimeservice.java:226)~[na:na]
在com.google.common.util.concurrent.AbstractExecutionThreadService$1$1.run(AbstractExecutionThreadService.java:47)~[com.google.guava.guava-13.0.1.jar:na]
在io.cdap.cdap.internal.app.runtime.batch.MapReduceUrontimeservice$2$1.run(MapReduceUrontimeservice.java:450)[na:na]
在java.lang.Thread.run(Thread.java:748)[na:1.8.0_222]
原因:java.lang.NoSuchMethodError:com.google.pubsub.v1.StreamingPullRequest.emptyIntList()Lcom/google/protobuf/Internal$IntList;
在com.google.pubsub.v1.StreamingPullRequest.(StreamingPullRequest.java:30)~[na:na]
在com.google.pubsub.v1.StreamingPullRequest.(StreamingPullRequest.java:1594)~[na:na]
在com.google.cloud.pubsub.v1.stub.GrpcSubscriberStub.(GrpcSubscriberStub.java:149)~[na:na]

欢迎任何帮助

错误消息与此其他问题类似:

如果是这样的话,包括
protobufjava
依赖项将在您使用maven时修复它。

谢谢。这(几乎)是正确的答案。实际上,在我的例子中,依赖项已经包含在内,但它指向的是一个早期版本。将此更新为最新版本(3.9.1)修复了此问题。
2019-09-04 15:01:00,727 - ERROR [MapReduceRunner-phase-1:i.c.c.i.a.r.ProgramControllerServiceAdapter$1@97] - MapReduce Program 'phase-1' failed.
java.lang.Exception: com.google.pubsub.v1.StreamingPullRequest.emptyIntList()Lcom/google/protobuf/Internal$IntList;
        at io.cdap.cdap.internal.app.runtime.AbstractContext.lambda$initializeProgram$1(AbstractContext.java:645) ~[na:na]
        at io.cdap.cdap.internal.app.runtime.AbstractContext.execute(AbstractContext.java:600) ~[na:na]
        at io.cdap.cdap.internal.app.runtime.AbstractContext.initializeProgram(AbstractContext.java:637) ~[na:na]
        at io.cdap.cdap.internal.app.runtime.batch.MapReduceRuntimeService.beforeSubmit(MapReduceRuntimeService.java:547) ~[na:na]
        at io.cdap.cdap.internal.app.runtime.batch.MapReduceRuntimeService.startUp(MapReduceRuntimeService.java:226) ~[na:na]
        at com.google.common.util.concurrent.AbstractExecutionThreadService$1$1.run(AbstractExecutionThreadService.java:47) ~[com.google.guava.guava-13.0.1.jar:na]
        at io.cdap.cdap.internal.app.runtime.batch.MapReduceRuntimeService$2$1.run(MapReduceRuntimeService.java:450) [na:na]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_222]
Caused by: java.lang.NoSuchMethodError: com.google.pubsub.v1.StreamingPullRequest.emptyIntList()Lcom/google/protobuf/Internal$IntList;
        at com.google.pubsub.v1.StreamingPullRequest.<init>(StreamingPullRequest.java:30) ~[na:na]
        at com.google.pubsub.v1.StreamingPullRequest.<clinit>(StreamingPullRequest.java:1594) ~[na:na]
        at com.google.cloud.pubsub.v1.stub.GrpcSubscriberStub.<clinit>(GrpcSubscriberStub.java:149) ~[na:na]