Google cloud storage Google pubsub侦听器未接收所有消息
我使用Google云存储来存储对象,存储桶与主题和订阅id关联。流程是这样的,Java应用程序请求上传链接,并使用这些上传链接上传对象。我还有一个用Java实现的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
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}