Google cloud dataflow 尝试读取数据流中的PubSub时发生异常

Google cloud dataflow 尝试读取数据流中的PubSub时发生异常,google-cloud-dataflow,publish-subscribe,dataflow,Google Cloud Dataflow,Publish Subscribe,Dataflow,我正在使用ApacheBeam2.18。 当我在DirectRunner中运行代码时,我可以获得messageId和消息详细信息。 但是,在我将代码部署到数据流之后,有时会得到错误的messageId和错误的消息细节,如下所示 PubsubMessage{message=[123, 34, 101, 118, 101, 110, 116, 78, 97, 109, 101, 34, 58, 34, 109, 121, 115, 113, 108, 73, 110, 115, 101, 114,

我正在使用ApacheBeam2.18。 当我在DirectRunner中运行代码时,我可以获得messageId和消息详细信息。 但是,在我将代码部署到数据流之后,有时会得到错误的
messageId
和错误的消息细节,如下所示

PubsubMessage{message=[123, 34, 101, 118, 101, 110, 116, 78, 97, 109, 101, 34, 58, 34, 109, 121, 115, 113, 108, 73, 110, 115, 101, 114, 116, -29, -126, -92, -29, -125, -103, -29, -125, -77, -29, -125, -120, 34, 44, 34, 110, 97, 109, 101, 115, 112, 97, 99, 101, 34, 58, 34, 114, 117, 108, 101, 47, -26, -128, -89, -24, -125, -67, -26, -92, -100, -24, -88, -68, -29, -125, -85, -29, -125, -68, -29, -125, -85, 34, 44, 34, 99, 114, 101, 97, 116, 101, 84, 105, 109, 101], attributes={}, messageId=:"2019-05-20T00:00:00.001","proper}
除此之外,我还有以下例外:

java.io.IOException: varint overflow 51498921187342211
        org.apache.beam.sdk.util.VarInt.decodeInt(VarInt.java:58)
        org.apache.beam.sdk.coders.StringUtf8Coder.readString(StringUtf8Coder.java:55)
        org.apache.beam.sdk.coders.StringUtf8Coder.decode(StringUtf8Coder.java:100)
        org.apache.beam.sdk.coders.StringUtf8Coder.decode(StringUtf8Coder.java:90)
        org.apache.beam.sdk.coders.StringUtf8Coder.decode(StringUtf8Coder.java:37)
        org.apache.beam.sdk.io.gcp.pubsub.PubsubMessageWithMessageIdCoder.decode(PubsubMessageWithMessageIdCoder.java:51)
        org.apache.beam.sdk.io.gcp.pubsub.PubsubMessageWithMessageIdCoder.decode(PubsubMessageWithMessageIdCoder.java:33)
        org.apache.beam.sdk.coders.Coder.decode(Coder.java:159)
        org.apache.beam.runners.dataflow.worker.PubsubReader$PubsubReaderIterator.decodeMessage(PubsubReader.java:129)
        org.apache.beam.runners.dataflow.worker.WindmillReaderIteratorBase.advance(WindmillReaderIteratorBase.java:57)
        org.apache.beam.runners.dataflow.worker.WindmillReaderIteratorBase.start(WindmillReaderIteratorBase.java:43)
        org.apache.beam.runners.dataflow.worker.util.common.worker.ReadOperation$SynchronizedReaderIterator.start(ReadOperation.java:361)
        org.apache.beam.runners.dataflow.worker.util.common.worker.ReadOperation.runReadLoop(ReadOperation.java:194)
        org.apache.beam.runners.dataflow.worker.util.common.worker.ReadOperation.start(ReadOperation.java:159)
        org.apache.beam.runners.dataflow.worker.util.common.worker.MapTaskExecutor.execute(MapTaskExecutor.java:77)
        org.apache.beam.runners.dataflow.worker.StreamingDataflowWorker.process(StreamingDataflowWorker.java:1324)
        org.apache.beam.runners.dataflow.worker.StreamingDataflowWorker.access$1000(StreamingDataflowWorker.java:151)
        org.apache.beam.runners.dataflow.worker.StreamingDataflowWorker$6.run(StreamingDataflowWorker.java:1053)
        java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        java.lang.Thread.run(Thread.java:748)

这是我的代码从订阅获取消息

PubsubIO.readMessagesWithMessageId().fromSubscription(options.getFromSubscription());

使用PubsubIO.readString()时,我可以正确获取消息详细信息, 但是我还需要messageId

我怎样才能解决这个问题


请允许我澄清您的问题。1) 你在DirectRunner中运行它吗?它工作正常吗?2) 当您尝试在数据流(GCP)中运行时会发生什么?您是否可以更新显示direct runner和dataflow中获得的数据之间差异的问题?3) 这个错误的上下文是什么?什么时候发生的?这与你的问题有关吗?希望收到你的来信谢谢你的回复。当我在DirectRunner中运行它时,我可以得到消息和正确的消息。当我尝试在数据流中运行它时,我得到了一个类似[java.io.IOException:varint overflow 51498921187342211]的Exeption。DirectRunner 1中的数据。messageid:966108514075563 2。Gcp数据流messageid:“2019-05-20T00:00:00.001”中的数据,“当我在主题中发布消息时,这是正确的,在仔细查看文档后,我会说您的问题可能是错误。我建议您通过此链接联系数据流支持人员()为了制造问题。让我澄清您的问题。1)您是否在DirectRunner中运行它?它是否正常工作?2)尝试在数据流(GCP)中运行时会发生什么情况?您能否更新您的问题,显示您在direct runner和dataflow中获得的数据之间的差异?3)此错误的背景是什么?何时发生?是否与您的问题有关?希望收到您的回复谢谢。当我在DirectRunner中运行时,我可以获得MessagId和正确的消息。当我在Dat中运行它时接下来,我得到了一个类似[java.io.IOException:varint overflow 51498921187342211]的Exeption。DirectRunner 1中的数据。messageid:966108514075563 2。Gcp数据流messageid中的数据:“2019-05-20T00:00:00.001”,“当我将消息发布到topic中时正确,在仔细阅读文档之后,我认为您的问题可能是一个bug。我建议您联系此链接()中的数据流支持部门,以便创建问题。