我有一个简单的springboot应用程序托管在googlecloudrun中,它将googlepub/sub消息发布到同一个项目中的某个主题。
这大约需要5分钟的时间。下面是我用来发布googlepub/sub消息的代码。但在appengine环境中,同样的方法工作得很好,没有任何延迟。
ApiFuture<String> messageIdFuture = com.google.cloud.pubsub.v1.Publisher.publish(pubsubMessage);
ApiFutures.addCallback(messageIdFuture, new ApiFutureCallback<String>() {
@Override
public void onFailure(Throwable throwable) {
if (throwable instanceof ApiException) {
ApiException apiException = ((ApiException) throwable);
// details on the API exception
log.error("APIException Status Code: {}", apiException.getStatusCode().getCode());
log.error("APIException is Retryable: {}", apiException.isRetryable());
}
log.error("Error publishing message: {}", pubSubMsg);
}
@Override
public void onSuccess(String messageId) {
log.info("Success msg after publish: {}", messageId);
}
}, MoreExecutors.directExecutor());
如何克服发布发布/订阅消息的延迟?
1条答案
按热度按时间2w3rbyxf1#
如果我没记错的话,springboot会创建一个包含嵌套jar的jar文件。在cloudrun中,这些文件在启动时被解压,这会影响运行时间。
googleappengine是一个托管服务;您无法控制运行时,然而,需要调整云运行容器以优化环境。
基于此,我希望您需要优化应用程序在容器中的运行方式。你在使用多阶段构建吗?您还可以尝试使用jib插件来封装您的应用程序,看看这是否可以改善您的计时。
我对springboot不太熟悉,但本文讨论了如何将代码容器化以获得最佳性能。这些链接提供了一些关于jib插件配置、github上的jib扩展以及本文的有用信息。