Google cloud storage Google pubsub侦听器未接收所有消息

Google cloud storage Google pubsub侦听器未接收所有消息,google-cloud-storage,publish-subscribe,Google Cloud Storage,Publish Subscribe,我使用Google云存储来存储对象,存储桶与主题和订阅id关联。流程是这样的,Java应用程序请求上传链接,并使用这些上传链接上传对象。我还有一个用Java实现的pubsub监听器,它接收上传通知消息,并在每次成功上传时执行一些操作。这是处理事件侦听的代码段 public void eventListener() { MessageReceiver messageReceiver = (message, consumer) -> { final Map<Str

我使用Google云存储来存储对象,存储桶与主题和订阅id关联。流程是这样的,Java应用程序请求上传链接,并使用这些上传链接上传对象。我还有一个用Java实现的pubsub监听器,它接收上传通知消息,并在每次成功上传时执行一些操作。这是处理事件侦听的代码段

public void eventListener() {
    MessageReceiver messageReceiver = (message, consumer) -> {
        final Map<String, Object> uploadMetaDataMap = getUploadDataMap(message);            
        LOGGER.info("Upload event detected => {} ", uploadMetaDataMap);
        // do something
        consumer.ack();
    };
    Subscriber subscriber = null;
    Subscriber finalSubscriber = subscriber;
    /* To ensure that any messages already being handled by receiveMessage run to completion */
    Runtime.getRuntime().addShutdownHook(new Thread() {
        @Override
        public void run() {
            finalSubscriber.stopAsync().awaitTerminated();
        }
    });
    try {
        subscriber = Subscriber.newBuilder(subscription, messageReceiver)
                .setCredentialsProvider(FixedCredentialsProvider.create(creds)).build();
        subscriber.addListener(new Subscriber.Listener() {
            @Override
            public void failed(Subscriber.State from, Throwable failure) {
                // Handle failure. This is called when the Subscriber encountered a fatal error and is shutting down.
                LOGGER.error(String.valueOf(failure));
            }
        }, MoreExecutors.directExecutor());
        subscriber.startAsync().awaitRunning();
        subscriber.awaitTerminated();
    } finally {
        if (subscriber != null) {
            subscriber.stopAsync().awaitTerminated();
        }
    }
}

我现在面临的问题是,并非所有成功的上传事件都会发送通知消息。我可以看到在
GCS
中创建的文件夹结构,其中包含相应的对象,但是在pubsub listener打印的日志中找不到与上载相关的通知。这困扰了我一段时间,我真的需要一些帮助。

订阅表中的unack消息呢?是平面的吗?@guillaumeblaquiere不幸的是,我没有权限查看指标。如果你没有权限查看订阅,很难说问题出在哪里。如果我假设Google平台按预期工作,我会看到两个可能的问题:要么你没有收到/处理/确认每条消息,要么未确认的消息会增加。或者同一订阅上有多个订户,而您的应用程序没有收到所有消息(其他消息发送给其他订户)。@guillaumeblaquiere我认为第二个可能是一个问题。我使用了一个新的主题/订阅,一切顺利。好消息!感谢您提供的后续信息您的订阅图表中的unack消息是什么?是平面的吗?@guillaumeblaquiere不幸的是,我没有权限查看指标。如果你没有权限查看订阅,很难说问题出在哪里。如果我假设Google平台按预期工作,我会看到两个可能的问题:要么你没有收到/处理/确认每条消息,要么未确认的消息会增加。或者同一订阅上有多个订户,而您的应用程序没有收到所有消息(其他消息发送给其他订户)。@guillaumeblaquiere我认为第二个可能是一个问题。我使用了一个新的主题/订阅,一切顺利。好消息!谢谢你的跟进
2020-08-03 16:12:14,686 [Gax-1] INFO  listener.AsynchronousPull - Upload event detected => {size=85, uuid=6dff9a20-3995-4f28-93e9-79e6c3cf613d, bucket=bucketName}